Systems and methods for networks of time series

ABSTRACT

This patent specification relates to systems and methods that use networks of standardized time series and models in a generic and extensible platform. More particularly, this patent specification relates to standardizing time series and models, using standardized time series and models in a network of time series (NOTS), and creating networks of time series in a NOTS platform. In addition, this patent specification relates to use of nodes that can be arranged in any user defined order, and each node is evaluated to return a time array that may be used to populate a time series. A layering framework may be used to define how each node is evaluated.

CROSS-REFERENCE TO A RELATED APPLICATION

This patent application claims the benefit of U.S. ProvisionalApplication No. 62/971,667, filed Feb. 7, 2020, the disclosure of whichis incorporated herein in its entirety.

TECHNICAL FIELD

This patent specification relates to systems and methods for using timeseries.

BACKGROUND

Machine learning or artificial intelligence is used to process data andprovide useful results. One type of machine learning uses time series. Atime series is a series of data arranged in time order. Examples of timeseries can be heights of ocean tides, historical weather, and dailyclosing value of the Dow Jones Industrial Average. In a machine learningcontext, time series can be used to predict unseen values based onpreviously observed values. That is a time series model can be fitted onavailable time series data so that values for other time steps can bepredicted using the model in a supervised learning task.

SUMMARY

This patent specification relates to systems and methods that usenetworks of time series in a generic and extensible platform. Moreparticularly, this patent specification relates to evaluating andcreating a network of time series (NOTS) using a combination of sources,time series, operations, and models in a NOTS platform. The sources,time series, operations, and models are standardized in nodes that areused to define the NOTS, and the NOTS platform enables users tocustomize how data is evaluated by each time series by using a layeringscheme.

A further understanding of the nature and advantages of the embodimentsdiscussed herein may be realized by reference to the remaining portionsof the specification and the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an illustrative time series that is used by variousembodiments;

FIGS. 2A, 2B, 3A, and 3B show several different time series examplesillustrating different contextual uses of natural time and as of timeaccording to various embodiments;

FIG. 4 illustrates a table of different time series that may be usedaccording to various embodiments;

FIGS. 4A, 4B, 4C, and 4D show illustrative block diagrams showing howmodels can be used to predict time series according to variousembodiments.

FIGS. 5, 6, 6A, 7, 8, and 9 show several different illustrative networksof time series according to various embodiments;

FIG. 10 shows electricity price network of time series as anillustrative embodiment;

FIG. 11 shows an illustrative conceptual generic network of time seriesaccording to an embodiment;

FIG. 12 shows illustrative platform according to an embodiment;

FIGS. 13A, 13B, 14, 15, and 16 show illustrative processes according tovarious embodiments; and

FIG. 17 is a block diagram of a special-purpose computer systemaccording to an embodiment.

FIG. 18 represents a time series created using a layering frameworkaccording to an embodiment.

FIG. 19 shows multiple layers can be included in a layer stack of alayering framework according to an embodiment.

FIG. 20 shows another layering framework according to an embodiment.

FIGS. 21A-21F shows several different specific examples of time seriesaccording to various embodiments.

FIG. 22 shows an illustrative network of time series graph according toan embodiment.

FIG. 23 shows an illustrative process for evaluating time series in anetwork of time series platform according to an embodiment.

FIG. 24 shows an illustrative user interface showing a time seriesgenerated using a NOTS platform according to an embodiment.

FIG. 25 shows an illustrative process according to an embodiment.

FIG. 26 shows another illustrative process according to an embodiment.

DETAILED DESCRIPTION

In the following detailed description, for purposes of explanation,numerous specific details are set forth to provide a thoroughunderstanding of the various embodiments of the present invention. Thoseof ordinary skill in the art will realize that these various embodimentsof the present invention are illustrative only and are not intended tobe limiting in any way. Other embodiments of the present invention willreadily suggest themselves to such skilled persons having the benefit ofthis disclosure.

In addition, for clarity purposes, not all of the routine features ofthe embodiments described herein are shown or described. One of ordinaryskill in the art would readily appreciate that in the development of anysuch actual embodiment, numerous embodiment-specific decisions may berequired to achieve specific design objectives. These design objectiveswill vary from one embodiment to another and from one developer toanother. Moreover, it will be appreciated that such a development effortmight be complex and time-consuming but would nevertheless be a routineengineering undertaking for those of ordinary skill in the art havingthe benefit of this disclosure.

Machine learning applied to the time series domain forms the basis ofthe embodiments discussed herein. A time series is a series of dataarranged in time order. Time series are typically used by companies tomeasure specific phenomena that somehow impact their business and, basedon these measurements, to better understand the past and to be able toreason about the future. Time series can also be used to predict presentvalues (sometimes referred to as nowcasting), predict past values(sometimes referred to as backcasting), in addition to predicting futurevalues (sometimes referred to as forecasting). Examples of time seriesare the heights of ocean tides, the numbers of products sold by anonline retailer, the amount of energy generated by a solar or wind farm,and the daily closing value of the Dow Jones Industrial Average. Whatmakes time series unique compared to other types of data are its naturaltemporal ordering and its inherent correlation in time with itself andother time series. These correlations in time imply that one time seriescan be used to predict another time series. One example of this might behow a World Cup soccer final that takes place in Brazil may have asignificant impact on the energy consumption in the Netherlands duringthe event, where people might be watching the game on television.Another example would be how the real-time price of electricity in theERCOT market might depend on the wind speed at the largest wind farms inTexas around that same time. In a world that is becoming increasinglymore connected, systems and methods discussed herein can leverage thisglobal interdependence of time series and provide high value predictionsto help users (e.g., businesses) make decisions and/or take actions.

Time series forecasting is the field that uses statistical models topredict future values of a particular time series based on previouslyobserved and predicted values of itself or other time series. Systemsand methods disclosed herein can use machine learning to predict unseenvalues, which may lie in the future, the present, the past, or acombination thereof, on much larger global scale than previouslypossible, leveraging complex relationships between potentially hundreds,thousands, or millions or more time series. The systems and methodsdisclosed herein can integrate new time series as they are created,thereby expanding the pool of time series that may be accessed topredict values for a particular time series.

Systems and methods are described herein that use a platform to enableusers to build a network of time series (NOTS). The network of timeseries can include any combination of time series, sources, operations,and models. The time series, sources, operations, and models can each berepresented as a node in a NOTS. Each node is standardized so that datacan be freely used among any of the nodes that make up the NOTS. Thisway, the output of any node can be used as an input to any node. Thenodes within a NOTS are arranged in an upstream-downstream format inwhich evaluation of any given node requires that all upstream nodes thatdirectly or indirectly feed into that given node be evaluated in orderfor the given node to be evaluated. These upstream nodes can be othertime series, sources, operations, or models.

Sources point to internal or external sources from which data can beobtained. When a source is evaluated, data can be obtained from a sourcefor a specific range of natural times and an as of time, and an“evaluation result” is returned that includes a time array of theobtained data. The evaluation results of a source can be mapped into atime series through one or more “source layers”. Operations can receivezero or more time series as input(s), and when run, can return one ormore time arrays encapsulated in an “evaluation result.” Theseoperations can be mapped to a time series through one or more “operationlayers”. Examples of operations include multiplying two time series,computing a percentile of a normal distribution, or splitting a timeseries into smaller sub-arrays. Models can produce one or more timearrays encapsulated in an “evaluation result” based on one or more timeseries as input(s). Models, in contrast with operations, are fitted (ortrained) so that the model can provide the time array(s) encapsulated inan evaluation result. When fitted, a model returns a “fit result”, whichcontains its fit parameters based on the one or more time series it wasfitted on. Models may be called “stateful”, whereas operations may becalled “stateless”. Models may produce a transformation or predictionbased on one more time series. Examples of models include linearregression, neural networks, k-means clustering, principal componentanalysis, or min-max scaling.

A time array represents the data returned during evaluation of a timeseries node, a source node, an operation node, or a model node. The timearray can be part of a multidimensional array having a first axisrepresenting a time dimension. New time arrays may be realized each timethe node is evaluated. The time arrays can be provided to another node,stored in a database, or presented in a user interface. In someembodiments, each node may query data that has been stored across manyevaluations. The user interface may obtain data through these queriesand present the data.

The time array is a specific instance of a time series representation ofdata, and it is this representation of data that is standardized for allnodes in the NOTS such that data can be passed from one node to another.Thus, each node returns a time array embodied as a time series —hencethe basis for the term network of time series. The term “time series” isused in two separate contexts throughout this document. In one context,time series refers to a time series node (e.g., node that include alayer pointing to a source, operation, or model), and in the othercontext, time series refers to a general name for data with a timedimension. Examples of different time series arrangements are shownbelow in connection with FIGS. 1, 2A, 2B, 3A, and 3B.

FIG. 1 shows an illustrative time series 100 that is used by variousembodiments as described herein. As shown, time series 100 has twodifferent time axes. The first axis is a “natural time” axis 110 (shownalong the x-axis) and the second axis is an “as of time” axis (shownalong the y-axis). Both axes 110 and 120 are arranged according to thesame time interval (e.g., shown here as hours within a given day). Theempty boxes within the grid formed by natural time axis 110 and as oftime axis 120 can be populated with a time series value (if known orpredicted) or can be null if unknown (e.g., neither known norpredicted). A time series value may be a scalar, tensor, categoricalvariable, probability distribution, or any other type of data. Many ofthe time series examples expressed herein are scalar time series. Itshould be understood that any suitable time interval may be used in axes110 and 120. For example, the time intervals can be on the order ofseconds, minutes, hours, days, weeks, years, or other suitable timemetric. The time interval used across the natural time axis may bereferred to as the sample period. The time period framing the start andend times of the time intervals may be the same or different for axes110 and 120. For example, the time period of both the natural time axis110 and as of time axis 120 may be set at one-hour intervals from astart time to an end time for a given year, multiple years, decades orlonger.

Natural time axis 110 refers to the ordinary or actual time that isassociated with a time series value or a null value. Natural time axis110 can span across past time, current time, and future time. Thecurrent time can refer to the instantaneous time such as Greenwich MeanTime (GMT) or Pacific Standard Time (PST). In some embodiments, the timeseries value is known for a particular time interval. Known time seriesvalues can be based on deterministic knowledge (e.g., time of the day,the position of the planets on any given day, etc.) or historicalknowledge (e.g., knowledge gathered based on observations). Historicalknowledge can be, for example, temperature readings. Thus, if timeseries 100 is a temperature time series, and the temperature at 1:00 amwas 42F, the time series value associated with 1:00 am is 42F. In otherembodiments, the time series value is unknown. For example, if the timeseries values for a time series are derived from historical knowledge,but the records for a period in the past are missing, the time seriesvalues associated with the time intervals in that past period may be setto null or not available (n/a). As will be explained in more detailbelow, these unknown time series values can be populated withpredictions using embodiments described herein. In yet anotherembodiment, the time series value for a given time interval can be aprediction. For example, referring again to the temperature time seriesexample, the time series values for the time intervals from 2:00 amthrough 1:00 pm may be populated with predicted time series values whenthe current time is 1:00 am. These predicted time series values are madein conjunction with an as of time interval as shown in as of time axis120.

As of time axis 120 refers to a point in time when one or more timeseries values are predicted for one or more time intervals acrossnatural time axis 110. FIG. 1 shows as of time intervals of 3 am-10 am.Each of these time intervals can represent the point in time in whichpredictions for time series values are made, based on the knowledge thatwas available at that moment in time. For example, for the 3:00 am as oftime interval, predictions can be made for natural time intervals 1:00am-1:00 pm across natural time axis 210, and at the 4:00 am as of timeinterval, predictions can be made for natural time intervals 1:00am-1:00 pm across natural time axis 210, and so on. It should beappreciated that if the time series value for a natural time interval isknown, that known time series value may likely take precedence over thepredicted time series value. For example, assume the current time is4:00 am, but there is no historical data available for natural timeintervals 1:00 am-4:00 am. In this situation, the predicted time seriesvalues may be used for natural time intervals 1:00 am-4:00 am and the asof time interval 4:00 am. If the historical data for natural timeintervals 1:00 am-4:00 am finally becomes available at 6:00 am, theknown values for natural time intervals 1:00 am-4:00 am would have an asof time interval of 6:00 am.

The predictions generated for any as of time interval can be projectedinto the past, the future, the present, and any combination thereof withrespect to time intervals across natural time axis 110.

FIGS. 2A, 2B, 3A, and 3B show several different time series examplesillustrating different contextual uses of the natural time and as oftime axes. FIG. 2A shows illustrative hour of the day time series 201.Time series 201 is an example of a deterministic time series. Indeterministic time series, the as of time intervals have no impact onany of the time series values across the natural time axis. This isbecause the hour of the day will be the same regardless of when anysystem is making a prediction of the time of day. For example, all ofthe as of time intervals associated with column 202 (e.g., 4 am column)are the same.

FIG. 2B shows illustrative electricity load time series 210. Electricityload time series 210 may only include historical data. In time series210, predictions are not used to populate time series future valuesrelative to the as of time intervals and those unpopulated time seriesvalues are null (e.g., N/A). Note that in this example the time seriesvalues across the natural time axis are always available up until theirrespective as of time intervals, e.g. natural time intervals 1:00am-6:00 am for as of time interval 6:00 am. However, there could be atwo-hour delay before historical data becomes available such that for asof time interval 6:00 am data is available for natural time intervals1:00 am-4:00 am and the values for natural time intervals 5:00 am-6:00am are null.

FIG. 3A shows illustrative temperature time series 320. Temperature timeseries 320 may include known values and predicted values. Predictionsfor different as of time intervals are used to populate the futureintervals across the natural time axis. In temperature time series 320,the predicted values are analogous to forecasted values, since they alllie in the future relative to their respective as of time intervals. Forexample, the 3:00 am as of time interval can represent predictions fornatural time intervals 4:00 am-1:00 pm (as shown by circle 321). The4:00 am as of time interval can represent predictions for natural timeintervals 5:00 am-1:00 pm (as shown by circle 322). The 5:00 am as oftime interval can represent predictions for natural time intervals 6:00am-1:00 pm (as shown by circle 323). The 6:00 am as of time interval canrepresent predictions for natural time intervals 7:00 am-1:00 pm (asshown by circle 324). The 7:00 am as of time interval can representpredictions for natural time intervals 8:00 am-1:00 pm (as shown bycircle 325). The 8:00 am as of time interval can represent predictionsfor natural time intervals 9:00 am-1:00 pm (as shown by circle 326). The9:00 am as of time interval can represent predictions for natural timeintervals 10:00 am-1:00 pm (as shown by circle 327). The 10:00 am as oftime interval can represent predictions for natural time intervals 11:00am-1:00 pm (as shown by circle 328). It is important to note that forthe purpose of this example the natural time was limited to 1 pm, whichmeans that each of the previously described predictions had a differentnumber of natural time intervals. In practical scenarios, predictionstypically have the same number of natural time intervals.

The historical data is consistent across as of time intervals when thenatural time interval precedes or matches the as the time interval. Forexample, time series values in columns 331-333 are the same throughoutthe entire range of as of time intervals. In column 334, for example,the time series values are the same from as of time interval 5:00through as of time interval 11:00 am, with the time series values at asof time intervals 3:00 am and 4:00 am being predicted time seriesvalues. In column 335, the time series values vary across the as of timeaxis, thus indicating that predicted time series values are notnecessarily going to be consistent or accurate.

FIG. 3B shows illustrative temperature time series 340. Temperature timeseries 340 may include known values and predicted values that includepast, present, and future predicted values. The predictions fordifferent as of time intervals can be used to populate the past,present, and future intervals across the natural time axis. The knowntime series values are contained within outline 341 and the futurepredicted time series values are contained within outline 342. The pastand present predicted time series values are contained within outline343. The past predicted time series values are shaded according to thehash marks set forth in box 344, and the present predicted time seriesvalues are shaded according to the hash marks set forth in box 345.Referring now specifically to the 5:00 am as of time interval, the timeseries values for natural time intervals 1:00 am-3:00 am are knownvalues (e.g., shown as 8.1, 8.6, and 7.4, respectively). The time seriesvalue at the 4:00 am natural time interval (e.g., 6.2) is a pastpredicted time series value because the 4:00 am natural time interval isbefore the 5:00 am as of time interval. The time series value at the5:00 am natural time interval (e.g., 5.4) is a present predicted timeseries value because the 5:00 am as of time interval is the same as thenatural time interval. It may be that the historical temperature datahas a two-hour upload delay, hence the reason the time series values fornatural time intervals 4:00 am-5:00 am corresponding to the 5:00 am asof time interval are past and present predictions. The time seriesvalues spanning natural time intervals 6:00 am-1:00 pm (e.g., 8, 7.1,5.1, 8.8, 12, 13.8, 15.3, and 18.8, respectively) are future predictedvalues because they occur after the 5:00 am as of time interval.

The combination of the as of time and natural time for a time series, orany time array, can be a standardized format that is used by all nodeswithin a NOTS. This enables data “evaluated” or returned for any node tobe used with any other node within the NOTS. This also enables priorevaluations that have been stored in a database, for example, to beaccessed and evaluated by new nodes that did not exist when the data wasinitially stored.

A network of time series (NOTS) platform can handle or classify dataaccording to as of time and natural time axes using a number ofdifferent criteria. The as of time interval can be determined when datais pulled in from a data source. The data source suppliers can berequired to provide timestamps for every data point being providedacross the natural time axis. For example, when an integration is setupwith a customer for pulling regularly updated historical data (e.g.electricity load), “snapshots” of the data can be pulled that areavailable through the integration using a regular “refresh period”. Therefresh period is determined by how often new data is expected to beavailable. For every new snapshot, the as of time interval associatedwith the new snapshot can be tagged with the current timestamp sincethat is the time “as of” which that data was received.

The intervals of the as of time and natural time axes can be set to apredefined interval such as one second, one minute, one hour, or oneday. In other embodiments, the interval can be based on a contractualagreement between a customer or vendor and the NOTS platform. In yetother embodiments, a received time series can be resampled to achievethe desired sample period (i.e. the interval used across the naturaltime axis). In some specific examples, the NOTS platform may use morefine-grained data (e.g., 10 minute sample period) and resample it to amore coarse-grained sample period. As another example, the NOTS platformmay use “interval end” (take the measurement made at the end of theinterval, so, for example, the measurement for 3 pm is used for thenatural time interval 2 pm), “interval start” (take the measurement madeat the start of the interval, so, for example, the measurement for 3 pmis used for the natural time interval 3 pm) or “interval mean” (take themean of all measurements in a certain interval, so, for example, themeasurements in 1:30-2:30 pm are averaged and used for the natural timeinterval 2 pm).

The NOTS platform can have as many as of time intervals as deemednecessary. In one embodiment, the as of time intervals can be set toevery sample period. If desired, the granularity of the as of timeintervals can be much finer. For example, for a time series with aone-hour sample period, and the NOTS platform creates new predictionsevery hour, or it receives new historical data snapshots every hour,each hour can correspond to a new as of time interval.

FIG. 4 illustrates a table of different time series that may be usedaccording to various embodiments discussed herein. The time series canbe classified as a deterministic time series or a non-deterministic timeseries. Deterministic time series do not require any predictions,because all values are either known or can be computeddeterministically. For example, deterministic time series can includedeterministic knowledge (e.g., time of the day or the relative positiveof the moon relative to the earth). Time series 102 of FIG. 3A,respectively, is an example of a deterministic time series. In someembodiments, deterministic time series do not need to include both theas of time axis and the natural time axis, but can include both. In someembodiments, the deterministic time series can include only the naturaltime axis.

Non-deterministic time series require predictions for certaincombinations of natural time intervals and as of time intervals.Non-deterministic time series are arranged to include both the as oftime axis and the natural time axis. In one embodiment, the natural timeintervals of the predictions can be relative to the as of timeintervals. That is the predictions generated across the natural timeaxis are relative to the as of time intervals. The degree to which thepredictions are relative to the as of time intervals are defined by astart offset and an end offset. Thus if the as of time interval is X,the prediction values generated for as of time interval X start at(X+the start offset) and end at (X+the end offset) along the naturaltime axis. For example, if the sample period is one hour, the startoffset can be +1 hour and the end offset can be +8 hours. In thisexample, such offsets can be used to predict future natural timeintervals. As another example, the start offset can be −1 hours and theend offset can be +8 hours. In this example, such offsets can be used topredict past, present, and future natural time intervals. In yet anotherexample, the start offset can be −2 hours and the end offset can be 0hours. In this example, such offsets can be used to predict the past andpresent natural time intervals. In yet another example, the offsets canbe set such that only past natural time intervals are predicted.

In another embodiment, the predictions are not relative to the as oftime intervals. That is the predictions are generated between a fixedstart time and end time across the natural time axis. For example, thestart time may be a specific date and time such as January 8 at 12 pmand the end time may also be a specific date and time such as January 9at 4 pm. In this example, predictions can be generated for each intervalacross the natural time axis from January 8 at 12 pm through January 9at 4 pm. The start and end times can result in predictions for pastnatural time intervals, present natural time intervals, future naturaltime intervals, and any combination thereof. In yet another embodiment,the predictions can be generated for a fixed start time and the end timemay be determined using an offset relative to the as of time interval,or vice versa.

Other embodiments discussed herein use a network of time series togenerate predictions that enable users or entities to perform actionsbased on the generated predictions. A network of time series (NOTS)system can assemble an array of different time series and use machinelearning models to generate time series prediction values for anactionable time series that is used by a user or entity. Examples ofmachine learning models that may be used for time series predictionsare: linear regression, recurrent neural networks, convolutional neuralnetworks, random forests, gradient tree boosting. The NOTS system canleverage any of the time series by standardizing all of the time seriesdata, for example, by organizing the time series data according to thedeterministic or non-deterministic time series as discussed above. Thisstandardization enables individual nodes (e.g., time series, sources,operations, or models) in the network to interact freely with eachother, without having to necessarily understand the underlyingmechanisms that were used to generate data. In this NOTS system, the asof time interval is communicated across nodes upstream to ensure thatthe models generating the predictions never have access to data that wasnot available at that specific point in time. For example, the NOTSsystem can enable a Japanese company that predicts the global weather toshare its time series data with an Austrian solar asset owner that wantsto use the weather data to predict power generation, without eitherparty having to understand each other's specific context and APIs. TheAustrian solar asset owner may sell or share its predictions with theoperator of the Austrian Power Grid, which can integrate this directlyinto its grid optimizations. The Austrian Power Grid operator does notneed to know anything about the data sources used to create thepredictions it receives from the Austrian solar asset owner. Because theintegration does not change based on the sources changing, this alsoallows the Austrian solar asset owner to change to using a Brazilianglobal weather forecaster to produce better predictions. The AustrianPower Grid operator will continue to receive forecasts in the same NOTSdata model and API contract despite the change.

The standardization process that enables time series to be uniformlyaccessed by any party is similar to the way any party can access awebsite via the “Internet”. The Internet is a global computer networkproviding a variety of information and communication facilities,consisting of interconnected networks using standardized communicationprotocols. The rise of the World Wide Web went hand in hand with theadoption of the HTTP protocol, which allowed users to easily accessresources across the Internet, without having to understand each other'sspecific context and infrastructure.

The NOTS system standardizes time series such that they are easilyaccessible over a network of time series or an “Internet of Time Series”(IOTS), without requiring different parties to understand how the timeseries was created or the data underlying the time series. For example,the NOTS system can enable any party to access any time series in theworld by going to a simple link. Through this link, one will be able toperform actions such as retrieving, storing, updating, or deleting timeseries values for a particular time series, for any combination ofnatural time intervals and as of time intervals. Which of these actionsa particular user might be allowed to perform depends on the levelaccess they have for a specific time series.

For example, an illustrative time series link could be:

ts://fbe874de-2623-4e36-9ef8-69debd141a69,where “ts” represents the protocol and“fbe874de-2623-4e36-9ef8-69debd141a69” represents the unique identifierof the time series. Such a link would allow any person or organizationto share their time series data with any other person or organization ina standardized format. In addition, being able to access time series viathese links would enable a person or organization to create new timeseries that are leveraging others' time series. For example, a weathertime series might be used in a model to predict an energy time series,and an energy time series might be used in a model to predict afinancial market time series.

The NOTS system supports the creation of a new value chain by enablingusers to use standardized time series existing in a pool of standardizedtime series to create higher value time series using standardized modelsthat are compatible with the standardized time series. As a byproduct ofthe NOTS system, containing the standardized time series and thestandardized models, companies may form to focus solely on measuringtime series data, while other companies may focus on using existing timeseries to develop models that predict higher value time series.Moreover, many other companies will use standardized time series tosolve actual real-world problems by taking specific actions or applyingspecific controls. An example of this would be how the operator of anelectric grid uses the time series of all the demand and supply in themarket to make decisions on how to optimally distribute the electricity.These resulting actions or control signals can also be time series thatbecome part of the NOTS pool of time series.

FIGS. 4A-4D show illustrative block diagrams showing how models can beused to predict time series. Specifically, it shows how time series arefirst used to fit models, how fit models are then used to predictvalues, and how model time series may hold values according to variousembodiments. FIG. 4A shows network of time series 400 that includesmodel 410 using one or more input time series, shown here as source timeseries 420 and 430 to predict one or more output time series, shown hereas source time series 440. Each of time series 420, 430, and 440 can beindividual nodes (e.g., source nodes representing different time seriesthat are used as a source or input to another node) in NOTS 400. Inputtime series may be referred to as feature time series, predictor timeseries, explanatory time series, independent time series, or exogenoustime series. Output time series may be referred to as target timeseries, label time series, response time series, explained time series,dependent time series, or endogenous time series. In order for model 410to predict the output time series (or endogenous time series), model 410is first fitted on examples of pairs of exogenous time series values andendogenous time series values for combinations of natural time intervalsand as of time intervals. An exogenous time series contains values forthe combinations of natural time intervals and as of time intervals usedto fit the model, as well as for the combinations for which one wants tocreate predictions for the endogenous time series. An endogenous timeseries contains values for combinations of natural time intervals and asof time intervals that are used to fit the model.

As shown in FIG. 4B, model 410 is fit using values located at specificnatural time intervals and as of time intervals within each of exogenoustime series 420 and 430 and endogenous time series 440. Note that forsimplicity in FIG. 4B the values in exogenous time series 420 and 430are identical, but in real-world use cases these would likely always bedifferent. Any suitable number of values for any combination of naturaltime intervals and as of time intervals from time series 420, 430, and440 can be used to fit model 410. For the purposes of this discussionand as an example, the values are for the specific natural timeintervals and as of time intervals that are highlighted by boxes 421,431, and 441. There are six values in each highlighted box, derived fromeach of time series 420, 430, and 440 that are used to fit model 410.The fit result for the model is stored in storage 450. The model fittingprocess can be repeated any number of times involving differentcombinations of natural time intervals and as of time intervals for eachof time series 420, 430, and 440, each resulting in a specific fitresult that is tagged by the specific natural time intervals and as oftime intervals that were used. For example, a model may be fit every twohours using data from the most recent 24 hours supplied by time series420, 430, and 440. In some embodiments, the exogenous time series valuesor endogenous time series values used to fit the model may contain nullvalues.

FIG. 4C illustrates a concept where a fitted model 410 can predictendogenous time series values based on one or more exogenous timeseries. As shown in FIG. 4C, exogenous times series 425 and 435 supplyvalues for a specific as of time interval and specific natural timeintervals, which is delineated by outlines 426 and 436. The values inoutlines 426 and 436 may include future predicted or deterministicallyknown values. All values contained within outlines 427 and 437 may befuture predicted or deterministically known values, and values locatedleft of outlines 427 and 437 may be past predicted, present predicted,or known values. Model 410 may be fit with a fit result provided bystorage 450. Model 410 can produce predictions in the form of modelpredict result for a particular combination of natural time intervalsand as of time intervals, shown in FIG. 4C as model predict result 445.Model predict results can be similar to a model evaluate result. Thepredicted values are shown in outline 446 and correspond to the samespecific as of time interval and natural time intervals from theexogenous time series values. Model predict result 445 may be stored instorage 450. Note that in this example model predict result 445 containspredicted values for only time series 440. In another example therecould be multiple endogenous time series, in which case the modelpredict result would contain predictions for all of these endogenoustime series.

FIG. 4D shows how a model time series 450 is created to hold predictedvalues created by the fitted model 410. FIG. 4D shows exogenous timeseries 425 and 435, endogenous time series 440, predict result 445, andmodel time series 450. The values for all combinations of natural timeintervals and as of time intervals, including known and unknown values,included in endogenous time series 440 are copied to model time series450. These values (supplied by time series 440) can serve as thefoundation of values that populate model time series 450. The predictedvalues contained within outline 446 of predict result 445 overwriterespective values supplied by endogenous time series 440 for thespecific natural time intervals and as of time interval in the predictresult. That is, the values in outline 446 that correspond to thespecific as of time interval and natural time intervals within predictresult 445 are used to overwrite the values corresponding to samespecific as of time interval and natural time intervals within timeseries 450. Thus, when endogenous time series 440 is used to populatemodel time series 450, these null or not available values (in outline442 of FIG. 4B) are overlaid with the predicted values generated bymodel 410 based on the exogenous time series 420 and 430. Model timeseries 450, which may now have values (i.e. not null) for future naturaltime intervals relative to the as of time intervals, can then be used asan exogenous time series for another model, if desired.

FIGS. 5-7 show different NOTS examples of time series and models beingused in conjunction with each other. The NOTS examples shown in FIGS.5-7 may serve as basic building blocks that are used to create moreadvanced NOTS. FIG. 5 shows NOTS 500, which can be used to fit a modelor can use a fitted model to predict a time series. Source time seriesare considered to be time series that are already defined before theyenter a particular NOTS. That is, they have specified values, which maybe predicted, known or unknown, for specific combinations of naturaltime intervals and as of time intervals. NOTS 500 can include exogenoussource time series 501-503, a model 510, and endogenous source timeseries 520. Source time series 501-503 can serve as input time series tomodel 510. Although three input time series are shown being provided tomodel 510, it should be understood that any number of input time seriescan be provided to model 510. Source time series 501-503, also labeledas “STS 1 (F)”, “STS 2 (F)”, and “STS 3 (F)”, respectively, can includevalues for future natural time intervals relative to the as of timeintervals. These future values may be known or they may be the result offuture predictions. That source time series 501-503 may include valuesfor future natural time intervals relative to the as of time intervalsis indicated by the “(F)” designation following the STS marker. Model510 can be a machine learning model that predicts an output time seriesshown here as endogenous source time series 520 (also labeled as “STS6”). Model 510 can be fitted using historical data from exogenous time501-503 and endogenous time series 520 for combinations of natural timeintervals and as of time intervals. Moreover, the model can becontinuously fitted and updated as additional historical data is madeavailable. For example, model 510 can be fitted with data from exogenoustime series 501-503 and endogenous time series 520. This fit can beperformed, for example, as discussed above in connection with FIG. 4B.

The values contained in source time series 520 can include known valuesand predicted values. Although source time series 520 is an endogenoustime series, source time series 520 can serve as an input time series(or exogenous time series) to another model. When model 510 is fittedand then uses exogenous time series 501-503 to predict endogenous timeseries 520 for a combination of natural time intervals and as of timeintervals, it is key that the natural time intervals and as of timeintervals that were used to retrieve data from time series 501-503 willbe consistent, and that this combination of natural time intervals andas of time intervals will be used to tag the resulting model prediction.Model predictions hence follow a similar data structure as shown inFIG. 1. For the purposes of using NOTS 500 as a building block for amore advanced NOTS, the arrangement of NOTS 500 is used to fit model 510so that it can used to generate predicted values for the endogenous timeseries 520, which are used to create a model time series, now discussedin FIG. 6.

FIG. 6 shows NOTS 600 that maps model predict results to a model timeseries. NOTS 600 builds on NOTS 500 and the FIG. 5 reference numberswill be used in FIG. 6. NOTS 600 adds model time series 525 (alsolabeled as “MTS 6”) and the predict results that are generated by fittedmodel 510. The predict results generated by model 510 are based onexogenous time series 501-503. Endogenous time series 525 may providevalues to model time series 525 for all combinations of natural timeintervals and as of time intervals and the model predict resultsgenerated by model 510 may be used to overwrite these with predictedvalues. Model time series 525 can use model predictions that arerelative to an as of time interval (e.g., −2 hours through +5 hours) orthat are not relative to an as of time interval (e.g., January 8 at 12pm through January 9 at 4 pm), and model time series 525 uses theunderlying time series 520 for all other combinations of natural timeintervals and as of time intervals. In other words, model time series525 can be a time series such as time series 320 or 340. The predictedvalues are supplied by model 510 through one or more model predictresults for specific combinations of natural time intervals and as oftime intervals, and predicted or known values are supplied by sourcetime series 520 for all other combinations of natural time intervals andas of time intervals.

FIG. 6A shows an example of model time series 525. Assume model timeseries 525 uses a −2 hour starting offset and +5 hour ending offset forusing its model's predict results to overwrite its underlying values. Inthis example we look at the as of time interval 10 am, for whichpredicted values from Sam through 3 pm are obtained from a model predictresult generated by model 510, as indicated by the blacked out barbetween Sam and 3 pm. Time series values for all other natural timeintervals can be obtained from source time series 520. After 3 pm, thevalues may be supplied by source time series 520, and in this particularexample, those values may be null because they are not yet observed.

FIG. 7 shows NOTS 700 that uses model time series as inputs to a modelaccording to an embodiment. NOTS 700 shows that model time series 525(also labeled as “MTS 6”), source time series 530 (also labeled as “STS7 (F)”), and model time series 570 (also labeled as “MTS 8”) are fedinto model 575 (also labeled as “M3”) as exogenous time series. Themixing of model time series 525 and 570 and source time series 530 ispossible because they are all standardized time series. Model 575 can befit based on model time series 525, source time series 530, model timeseries 570, and source time series 580 (also labeled as “STS 9”), whichis an endogenous time series. NOTS 700 illustrates that any combinationof model time series and source time series can be provided as inputs toa model. Another type of time series, known as a transform time series,may also be used in the NOTS platform. A transform time series may be astateless transformation of an existing source time series, transformtime series, or a model time series. In one embodiment, a transform timeseries is a time series node with a layer that points to an operationnode. One example of a stateless transformation would be amultiplication by a factor of two, which means that a transform timeseries would receive all values from a particular time series for allcombinations of natural time intervals and as of time intervalsmultiplied by two. Another example would be taking the average acrossthree particular time series, which means that a transform time serieswould receive the average of the values from the three underlying timeseries for all combinations of natural time intervals and as of timeintervals. Yet another example would be to compute the differencebetween the values across the natural time axis for a particular timeseries and a specified time offset (e.g. the 24-hour difference).

FIG. 8 shows NOTS 800 that uses model time series as inputs to a modelto create another model time series according to an embodiment. NOTS 800adds to NOTS 700 by adding model time series 585 (labeled as “MTS 9”).Model time series 585 can receive predicted values from fitted model 575through one or more model predict results and all other values fromsource time series 580. The predicted values received from model 575 canbe relative to one or more as of time intervals or can be independent ofany as of times (e.g., predictions values can be provided between astart time and an end time). An action or decision 590 may be executedbased on model time series 590.

FIG. 9 shows illustrative NOTS 900 according to an embodiment. NOTS 900can represent a comprehensive network of time series that incorporatesseveral smaller networks. NOTS 900 can incorporate NOTS 600 and NOTS 800as previously described and adds source time series 541 and 542 (alsolabeled as “STS 4 (F)” and “STS 5 (F)”), model 550 (also labeled as“M2”), and source time series 560 (also labeled as “STS 8”). Model 550provides predicted values for specific combinations of natural timeintervals and as of time intervals to model time series 570 through oneor more model predict results that were generated based on valuesprovided by source time series 541 and 542. Source time series 560contributes values to model time series 570 for all other combinationsof natural time intervals and as of time intervals. Note thatillustrative NOTS 900 contains only source time series and model timeseries, but that any NOTS might also include transform time series.

NOTS 900 is designed to create model time series 590 so that action 595can be executed. In order to provide model time series 590, NOTS 900 isarranged to generate model time series 525 and model time series 570. Asshown, model time series 525 is derived from predicted valuesencapsulated by one or more model predict results generated by model510, which receives inputs from source time series 501-503, and valuesfrom source time series 520. Model time series 570 is derived frompredicted values encapsulated by one or more model predict resultsgenerated by model 550, which receives inputs from source time series541 and 542, and values from source time series 560. Source time series501-503, 530, 541, and 542 can each represent different first order timeseries containing predicted or known values that are used to influenceaction 595. Model time series 525 and 570 can represent two differentsecond order time series containing predicted or known values that areused to influence action 595. Model time series 525, source time series530, and model time series 570 are fed into model 575, which generatedpredicted values for model time series 590. Model time series 590 canrepresent a third order time series that depends on the predicted orknown values of the first and second order time series. Note that therequested combinations of as of time intervals and natural timeintervals for model time series 590 will always travel through allmodels and time series upstream. For example, if for action 595 a userrequires values from model time series 590 for as of time January 4 at10 am and natural time intervals January 4 at 11 am through January 4 at8 pm, first a model predict result needs to be generated by model 3 forthis combination of as of time intervals and natural time intervals. Inorder for this model predict result to be generated, model 3 requiresvalues from its exogenous time series 525, 530, and 570 for thediscussed combination of as of time intervals and natural timeintervals. For model time series 525 and 570 to provide these values,their respective models need to generate model predict results for thesame combinations of as of time intervals and natural time intervals,and so on. This flow of information is enabled by the standardization oftime series and models discussed in this document and is fundamental tothe NOTS.

FIG. 10 shows electricity pricing NOTS 1000 as an illustrativeembodiment. NOTS 1000 can represent a potential real-worldimplementation of NOTS 900. NOTS 1000 is designed to predict the priceof electricity so that electricity can be traded as an actionable itemby a user or company at step 1095. Legend 1099 indicates whether theboxes shown in FIG. 10 correspond to source time series, a model timeseries, or a model. Legend 1099 also indicates whether a source timeseries or a model time series contains future predicted values. Asshown, temperature source time series (STS) 1001, humidity STS 1002, andrainfall STS 1003 are fed into load model 1010. Load model 1010 canpredict electricity load and provide predicted values for specificcombinations of natural time intervals and as of time intervals toelectricity load model time series (MTS) 1025, and electricity loadsource time series (STS) 1020 contributes values for all othercombinations of natural time intervals and as of time intervals Solarirradiance STS 1041 and cloud coverage STS 1042 are fed into solar modelSTS 1050. Solar model STS 1050 can predict solar generation and providepredicted values for specific combinations of natural time intervals andas of time intervals to solar generation MTS 1070, and solar generationSTS 1060 contributes values for all other combinations of natural timeintervals and as of time intervals. Oil price STS 1030, electricity loadMTS 1025, and solar generation MTS 1070 are fed to price model 1075.Price model 1075 can predict electricity price and can provideelectricity price predicted values for specific combinations of naturaltime intervals and as of time intervals to electricity price MTS 1090,and electricity price STS 1080 contributes values for all othercombinations of natural time intervals and as of time intervals.

It should be understood that the arrangement of NOTS 900 and NOTS 1000are merely illustrative and that any arrangement of a network of timeseries may be constructed. For example, although only three orders oftime series are shown, it is possible for any number of orders of timeseries to be constructed, and each order can have any number of timeseries. The possible configurations and potential applications arelimitless.

FIG. 11 shows an illustrative conceptual NOTS 1100 according to anembodiment. NOTS 1100 shows time series STS 1-STS 3 and MTS 4-MTS 7arranged in an exemplary network as shown. The models and the underlyingtime series, as shown in NOTS 900, are omitted for clarity. NOTS 1100 isarranged to include source time series, intermediate time series, andtarget time series. The source time series (illustrated here as STS1-STS 3) can serve as the starting or source nodes of this network oftime series and can be used to create intermediate time series and/ortarget time series. In some embodiments, the source time series mayalign with a first order of the network of time series. However, suchalignment is not mandatory. For example, if desired, source time seriescan be used in any order of the network of time series. Referringspecifically to NOTS 900, for example, source time series 530 is used inthe second order, whereas source time series 501-503, 541, and 542 usedin the first order. The intermediate time series can representintermediate nodes within the network of time series and are illustratedhere as MTS 4-MTS 6. In some embodiments, the intermediate time seriescan include only model time series or any combination of source timeseries, model time series, or transform time series. The target timeseries can represent the final or terminal node of a network of timeseries, shown here as MTS 7. The target time series can produce thefinal result of the network of time series that is used by a user,company, or some other entity to take an action based on the predictedvalues provided by the target time series. The intermediate time seriesmay correspond to intermediate orders of the network and the target timeseries may correspond to the final order of the network. Note that insome cases all source time series could be used as exogenous time seriesin one model to directly predict the target time series. However, thedimensionality of this feature space of this model (i.e. the possiblecombinations of values across the exogenous time series) might be toolarge to effectively sample it with historical data. For example, ifthere are a thousand source time series that can ultimately explain onetarget time series, one might need millions of hours of historicalexamples to fit the model in order for it to make accurate predictions,which is not possible in most use cases (e.g. an electricity marketmight not have historical hourly electricity price data for more than afew decades). In this context, using intermediate time series can bethought of as a way to constrain the problem by enforcing structure thatreflects human knowledge about the use case. For example, weather timeseries could be used directly to predict electricity price time series,but using the intermediate electricity load time series and solargeneration time series introduce constraints onto the problem that mayultimately lead to more accurate electricity price predictions.

FIG. 12 shows illustrative NOTS platform 1200 according to anembodiment. NOTS platform 1200 can interact with external sources 1297,external applications 1298, and external models 1299. Platform 1200 canaccess external sources 1297, external applications 1298, and externalmodels 1299 via the Internet or other networks. External sources 1297can include, for example, time series that are supplied by providers oftime series. Providers of time series can include entities thatspecialize in time series such as weather, cloud coverage, and solarirradiance or the providers can be an open source database. Externalapplications 1298 can represent applications that are used by users orcompanies that perform actions based on predictions provided by platform1200. External model 1299 can enable externally generated models(machine learning models) to be interchangeably used with platform 1200.

Platform 1200 can include input adapters/source connector 1210, timeseries engine 1220, time series database 1225, output adapters 1230,model engine 1240, model database 1245, model adapter/model connector1250, and transform/operation engine 1260. Input adapter/sourceconnector 1210 is operative to receive time series from external sources1297. For example, platform 1200 may have built-in integrations withthird party data vendors that serve as external sources 1297. This mayallow users of platform 1200 to have access to a large variety of datasources without requiring the users to setup specific contracts or dataintegrations with the third party data vendors. As another example, if auser of platform 1200 has their own time series data, platform 1200 caningest their time series data via adapter/connector 1210 so that datacan be used by platform 1200. In other words, input adapter/sourceconnector 1210 can convert any external time series into a standardizedtime series (e.g., time series described above in connection with FIGS.1, 2A, 2B, 3A, 3B, and 4) used by platform 1200. Output adapter 1230 isoperative to convert time series data received from time series engine1220 to a format suitable for use by external application 1298. Inputadapter/input connector 1210 and output adapter 1230 can handle filessuch as CSV, JSON, XML, and XLSX, databases such as InfluxDB,TimescaleDB, and OpenTSBD, cloud storage such as FTP, S3, GCS, Clientlibraries such as Python, R, and Javascript, Third Party integrationsuch as Splunk, Tableau, ETRM, and Google Sheets, and customizationssuch as a Docker container. In some embodiments, users can build theirown input adapters and output adapters. This may be enabled by allowingusers to specify their own Docker containers, which may allow forintegration with any data source or any application.

Model adapter/model connector 1250 may enable model engine 1240 toaccess or use models available by external model 1299. That is, insteadof using a model that is included as part of platform 1200, which can bereferred to as a native model, model adapter/connector 1250 may enableplatform 1200 to swap the native model for an external model. A nativemodel may refer to a model that is stored and managed by platform 1200.An external model is a model that is stored and managed by an entityother than platform 1200. For example, assume a user has created ahighly customized model and wishes to use that model as opposed to anative model available on the platform. For example, the customizedmodel may be specified in a Docker container. When that highlycustomized model is needed for fitting based on exogenous and endogenoustime series, or to predict values based on exogenous time series, modelengine 1240 can provide the time series via model adapter/connector 1250to that customized model (located at external model 1299) and receivethe predicted values from external model 1299 via modeladapter/connector 1250.

Time series engine 1220, model engine 1240, and transform/operationengine 1260 can operate together to produce predicted values that areprovided to a user, for example, via output adapter 1230 or a userinterface (not shown). For example, the predicted values can bepresented as part of a model time series in a user interface. When auser accesses platform 1200 and desires values from specific timeseries, time series engine 1220 can retrieve one or more time seriesfrom storage 1225 and/or access one or more time series available atexternal sources 1297. All time series used by time series engine 1220are standardized using the as of time and natural time axes as discussedabove. In addition, model engine 1240 may retrieve one or more model fitresults for one or more models from storage 1245 and/or access one ormore external models 1299 via model adapter 1250. Transform/operationengine 1260 can generate new time series by applying a statelesstransformation or operation to one or more existing time series. Forexample, transform/operation engine 1260 can create a new time series bymultiplying a time series by two, or by aggregating multiple timeseries, or subtracting one time series from another time series. In someembodiments, transform/operation engine 1260 can function as a connectorfor operations. For example, the connector may serve as an operationlayer that connects a time series node to an operation node. Sourceconnector 1210 can serve as a source layer that connects a time seriesnode to a source node. Model connector 150 can serve a model layer thatconnects a time series node to a model node.

Time series engine 1220 can organize the time series (e.g., source timeseries, model time series, and transform time series) and coordinate thegeneration of predicted values by models being managed by model engine1240. For example, time series engine 1220 may retrieve values from oneor more source time series and provide them to a model in model engine1240, which can generate predicted values for a model time series. Thevalues associated with a target time series in the network of timeseries can be provided to output adapter 1230 or a user interface. Modelengine 1240 may be used to automatically select the optimal model typeand model hyperparameters such that the predicted values for a set ofendogenous time series minimize a specified evaluation function. Modelengine 1240 may also be used to automatically select optimalcombinations of exogenous time series for a particular model from thepool of time series managed by time series engine 1220 based on whichcombinations minimize a specified evaluation function applied to themodel predictions for the endogenous time series. Examples of evaluationfunctions that may be used for these purposes are: mean absolute error,mean squared error, mean absolute percentage error, or negativelog-likelihood.

An example of how platform 1200 is able to produce an actionable modeltime series is now discussed in reference to NOTS 900 of FIG. 9. Inorder for platform 1200 to produce MTS 590, platform 1200 can access STS501-503, 520, 541, 542, 560, and 585 via input adapters 1210 or storage1225, and further access models 510, 550, and 575 via model adapters1250 of storage 1245. Platform 1200 can then generate MTS 525 and MTS560 (as previously discussed) and then generate MTS 590 (as previouslydiscussed), which may all be stored in storage 1225. Platform 1200 canprovide MTS 590 to output adaptors 1230 so that an appropriate actioncan be taken.

Platform 1200 can retrieve time series values for any combination ofnatural time intervals and as of time intervals, provided such data isavailable. For example, platform 1200 can retrieve hourly temperaturesfor a certain weather station for the past three years, as of 10 am thismorning. As another example, platform 1200 can retrieve temperatures forevery hour tomorrow, as of 2 pm yesterday. In some scenarios, platform1200 may be asked to provide values that are not available. In suchscenarios, the platform may resort to a fall back time series, use adefault value, use null values, or provide an indication or warning thatthe data is not available.

Platform 1200 may use smart compression techniques to efficiently storetime series and time series data, including values across the as of timeaxis, in storage 1225. As can be appreciated, a substantial amount ofdata for any given time series, and as of time intervals thereof, canhave overlapping data. For example, historical values for a weather timeseries observed for October 2019 as of Jan. 1, 2020 are almost certainlythe same as those observed for October 2019 as of Jan. 2, 2020. Thisdata would be duplicated if stored without intelligent compression anddeduplication techniques. If desired, traditional compression techniquescan be used to reduce storage requirements. As another example, fullynormalized representations of time series may be created to reduce oreliminate duplication among overlapping segments. In this approach,special metadata can be used to re-compose a time series, on-demand orpre-computed, from constituent, de-duplicated parts. As yet anotherexample, asynchronous post-processing methods that act asmeta-compression across multiple time series data segments. Suchmeta-compression can identify duplicate segments with larger time seriesand data segments that are related to immutable input data by way of atransform function. In yet another approach, intelligent pruning ofpre-computed predicted values can be implemented. For example,pre-computed predicted values that are infrequently used can be prunedif such predicted values can be regenerated on-demand with acceptabletradeoffs. In yet another example, instead of storing raw output of amodel, the function and metadata describing operation of the functioncan be stored and used to generate the output when needed.

Platform 1200 may enable users to search for time series that suit theirparticular needs. This may be particularly useful when the number ofavailable time series approaches thousands or millions or more. Platform1200 may tag each time series with metadata or classify it according toa catalogue. For example, metadata can include location of the timeseries asset such as its unique address or specific tag informationcreated by the author of the time series. The metadata can include, forexample, the category of time series (e.g., “weather”), the type of data(e.g., “temperature”), information about how it was generated (e.g.,“prediction”, “historicals”, “combined prediction and historicals”) orwho generated it.

Platform 1200 may enable users to share and/or modify time series ormodels. Users may be able to share time series or models within theirorganization or across organizations. Platform 1200 may assign aspecific sharing policy to each time series or model. For example, thesharing policy may indicate whether the time series may be shared,whether it can be viewed or downloaded, and whether the time series canbe modified. Users or organizations may decide to sell their time seriesdata to other users or organizations. Platform 1200 may be able toprocess these types of financial transactions.

FIG. 13A shows illustrative process 1300 according to an embodiment.Process 1300 may be implemented using platform 1200. Starting at step1310, a network of time series (NOTS) including a plurality of sourcetime series, a plurality of transform time series, a plurality of modeltime series, and a plurality of models is defined. The NOTS can bedefined based on user inputs and design criteria. For example, the usercan define the NOTS to resemble NOTS 900 or NOTS 1000. The user orplatform may specify how the plurality of source time series is used asinputs to the plurality of models and the plurality of model timeseries. In addition, the user or platform may specify each of theplurality of models that are used to yield each of the plurality ofmodel time series. The user or platform may also specify which of themodel time series are to be used as inputs to a model. The arrangementof source time series, models, and model time series can take anysuitable shape to define the NOTS. Each of the source time series andthe model time series can be standardized to include a natural time axisand an as of time axis. This facilitates interaction of all time serieswith each other and with the models. At least one of the plurality ofsource time series can include future predicted or deterministicallyknown values. Other source time series may be used as underlying timeseries for a given model time series. The source time series, transformtime series, or model time series can be classified as exogenous timeseries or endogenous time series. A combination of exogenous time seriesand endogenous time series may be used to fit one of the models.

At step 1320, predicted values are generated using the NOTS. Thegenerated predicted values can be future predicted values past predictedvalues, present predicted values, or any combination thereof. Thegenerated predicted values can be relative to an as of time interval(e.g., the values are predicted from a start offset through an endoffset) or the generated predicted values can be not relative to an asof time interval (e.g., the values are predicted between a fixed starttime and a fixed end time).

At step 1330, an action can be performed based on the generatedpredicted values. It should be understood that each of the model timeseries can include generated predicted values, however, the action beingperformed may be based on only one of the model time series, or a sourcetime series or a transform time series. Any time series within the NOTScan be characterized as one of an upstream time series, a downstreamtime series, and both an upstream time series and a downstream timeseries relative to any other time series within the NOTS. The downstreamtime series may have a higher intrinsic value than the intrinsic valueof upstream time series, and the downstream time series may producepredicted values that have a lower accuracy than values produced byupstream time series. The action being performed can be external to theNOTS platform.

It should be understood that the steps shown in FIG. 13A are merelyillustrative and that additional steps may be added, re-arranged, oromitted.

FIG. 13B shows illustrative process 1350 according to an embodiment. Atstep 1355, a network of time series (NOTS) including a combination oftime series arranged in an upstream to downstream format in which anyupstream time series directly or indirectly feeds into a downstream timeseries is defined. The NOTS can be further defined by receiving userinput via a NOTS platform selection of each time series for inclusioninto the combination of time series, where each time series is selectedfrom one of a source time series, a transform time series, and a modeltime series, as shown in step 1360, and arranging, via user input viathe NOTS platform, a position of each time series comprising thecombination of time series within the upstream to downstream format ofthe NOTS, as shown in step 1365. As will be explained in more detailbelow, each time series can be a time series node with a layer thatpoints to a source, operation, or model. The combination of time seriescan include a plurality of source time series and at least one modeltime series. At step 1370, predicted values for the at least one modeltime series using the NOTS can be generated. At step 1375, an actionbased on the generated predicted values can be performed. For example,the generated values can be stored in a database, be used by anauthorized user to execute a financial transaction, or displayed in auser interface.

It should be understood that the steps shown in FIG. 13B are merelyillustrative and that additional steps may be added, re-arranged, oromitted.

FIG. 14 shows illustrative process 1400 according to an embodiment.Process 1400 can be implemented in platform 1200, for example. Process1400 can include several steps such as receiving user inputs via aplatform to define a network of time series, receiving user inputs viathe platform to define an evaluation time period, and evaluating thenetwork of time series based on the evaluation time period. Evaluatingthe network of time series can include steps 1410, 1420, 1430, 1440,1450, and 1460. Starting at steps 1410 and 1420, at least one exogenoustime series (e.g., source time series 501 of FIG. 6) and one endogenoustime series (e.g., source time series 520 of FIG. 6) that supply valuesto a model (e.g., model 510 of FIG. 6) can be accessed. The model isfirst fitted based on values from the exogenous time series andendogenous time series, after which it can be used to predict valuesassociated with the endogenous time series. In addition, the endogenoustime series serves as an underlying time series for a model time series(e.g., model time series 525). At step 1430, the model time series canbe populated with underlying values supplied by the endogenous timeseries. At step 1435, the at least one exogenous time series and the atleast one endogenous time series can be used to fit the model. At step1440, the model can be used to generate predicted values based on atleast one exogenous time series (e.g., the predict results generated bymodel 510 are provided to model time series 525). At step 1450, thepredicted values can overwrite at least one of the underlying values inthe model time series. At step 1460, the model time series can be usedas an input to a second model (e.g., referring to FIG. 7, model timeseries 525 can be used as an exogenous time series for model 575) or asa basis for a user to perform an action (e.g., referring to FIG. 8,model time series 585 may result in action 590).

It should be understood that the steps shown in FIG. 14 are merelyillustrative and that additional steps may be added, re-arranged, oromitted.

FIG. 15 shows illustrative process 1500 according to an embodiment.Process 1500 can be implemented in platform 1200, for example. Startingat step 1510, a time series can be received. At step 1520, the receivedtime series can be formatted as a standardized time series suitable foruse in an NOTS platform, each standardized time series comprising anatural time axis and an as of time axis, wherein an as of time intervalwithin the as of time axis represents a time from which a predicted orknown value is projected across the natural time axis. FIG. 2 and FIGS.3A-3D all show standardized time series. At step 1530, the standardizedtime series can be used in the network of time series platform.

It should be understood that the steps shown in FIG. 15 are merelyillustrative and that additional steps may be added, re-arranged, oromitted.

FIG. 16 shows illustrative process 1600 according to an embodiment.Process 1600 can be implemented in platform 1200, for example. Startingat step 1610, a first set of exogenous time series is defined. Forexample, referring to FIG. 10, the first set of exogenous time seriescan include time series 1001-1003. At step 1615, a first set ofendogenous time series (e.g., source time series 1020) and a second setof endogenous time series (e.g., source time series 1060) are defined.At step 1620, the first set of exogenous time series can be input to afirst fitted model to generate the first set of model predict resultscontaining predicted values. For example, in FIG. 10, the first modelcan be model 1010, which is configured to predict a first endogenoustime series (source time series 1020). At step 1622, the first set ofexogenous time series can be input to a first fitted model to generate afirst set of predicted values. At step 1625, the first set of modelpredicted values can be used to create a first model time series (e.g.,model time series 1025) for specific combinations of natural timeintervals and as of time intervals, where a first endogenous time series(e.g., source time series 1020) is used to fill in values for allcombinations of natural time intervals and as of time intervals thatwere not covered by the model predict results. In other words, the firstmodel time series can use the first endogenous time series as anunderlying time series to populate the first model time series. At step1630, a second set of exogenous time series comprising the first modeltime series can be defined. For example, in FIG. 10 the second set ofexogenous time series can include model time series 1025, source timeseries 1030, and model time series 1070. At step 1635, the second set ofexogenous time series and the second set of endogenous time series canbe used to fit a second model. At step 1640, the second set of exogenoustime series can be input to a second model (e.g., model 1075), which isconfigured to predict a second endogenous time series (e.g., source timeseries 1080), to generate a second set of model predict resultscontaining predicted values. At step 1645, the second set of predictedvalues can be used to populate a second model time series for specificcombinations of natural time intervals and as of time intervals, whereinthe second model time series uses values from the second set ofendogenous time series for all other combinations of natural timeintervals and as of time intervals. For example, the second set of modelpredict results containing predicted values can be used to create asecond model time series (e.g., model time series 1090), where a secondendogenous time series (e.g., time series 1080) is used to fill invalues for all combinations of natural time intervals and as of timeintervals that were not covered by the model predict results. In otherwords, the second model time series can use the second endogenous timeseries as an underlying time series to populate the second model timeseries. At step 1650, an action can be executed in response to an outputof the second model time series (e.g., action 1095). Each of the firstset of exogenous time series, the second set of exogenous time series,the first model time series, the first endogenous time series, thesecond model time series, and the second endogenous time series isformatted according to a standardized time series format comprising anatural time axis and an as of time axis. The as of time interval withinthe as of time axis represents a time from which a value in any one ofthe first model time series and the second model time series isprojected across the natural time axis.

It should be understood that the steps shown in FIG. 16 are merelyillustrative and that additional steps may be added, re-arranged, oromitted.

It should be understood that most or all of the time series and themodels discussed in connection with FIGS. 4A-4D, 5, 6, 6A, 7-12, 13A,13B, 14-16 can be independent nodes within a NOTS. Referring to FIG. 6,for example, source time series 501, 502, 503, and 520 can be timeseries nodes, model 510 can be a model node, and model time series 525can be a time series node. Not shown in FIG. 6 are source nodes andoperation nodes. The arrangement of nodes within the NOTS and how eachnode is programmed to return its respective evaluation result is nowdiscussed below.

FIG. 18 represents a time series 1801 realized using a layeringframework 1800 according to embodiments discussed herein. Layeringframework 1800 can include layer stack 1802 and time array 1808 and hasaccess to input data 1820. Layering framework 1800 may receive anevaluation time frame 1830 that defines a specific range of naturaltimes to be evaluated with respect to an as of time. Only one layer,source layer 1804, is shown as being included as part of layer stack1802, though multiple layers may be included. Input data 1820 is shownto include source 1824. Input data 1820 can include outputs of sources,models, operations (e.g., sometimes referred to herein as statelesstransforms), and time series. Source based input data can represent dataobtained from data sources (e.g., historical weather for a particularlocation). Model based input data can represent prediction data obtainedfrom a model. Operation based input data can represent transformed dataobtained from an operation. Time series input data can represent dataobtained from another time series.

Each layer in layer stack 1802 may have a start time and an end time,which may be an absolute time or relative to an ‘as of time’. Forexample, source layer 1804 has a start time 1804 a and end time 1804 b.Start time 1804 a and end time 1804 b define the range of time for whichdata is pulled from source 1824 and potentially included in time series1801. The data returned by layering framework 1800 (through theapplication of layering stack 1802 to input data 1820) is referred to asa time array, shown as time array 1808. The time array is embodied intime series 1801 and represents a multi-dimensional array where one ofits axes is represented by a time dimension for a specific as of time.Multiple time arrays can be generated during evaluation of a timeseries. For example, a time series can comprise multiple time arraysthat are “stitched” together.

Layering framework 1800 produces time array 1808 by applying layer stack1802 to input data 1820 within context of evaluation time frame 1830.That is, when a time series is evaluated according to evaluation timeframe 1830, layering framework 1800 progresses through the one or morelayers contained in stack 1802 to retrieve data for the time rangescovered by each layer. For example, assume 1834 a and 1834 b refer tostart and end time, respectively, of evaluation time frame 1830.Layering framework 1800 can produce time array 1808 by accessing sourcelayer 1804 between start time 1834 a and end time 1834 b, which resultsin source layer 1804 pulling data from source 1824 between start time1834 a and end time 1834 b and populating time array 1808 with thepulled data. The values contained in time array 1808 represent theresults returned for time series 1801.

Although layer stack 1802 includes only one layer, multiple layers canbe included therein. When multiple layers are included, they arearranged in order of priority (e.g., in a top/down priority arrangement)for defining how the time series is evaluated or constructed. Referringnow to FIG. 19, multiple layers are shown to be included in layer stack1902 of layering framework 1900 of time series 1901 according to anembodiment. Layering framework 1900 can include layer stack 1902, haveaccess to input data 1920, and receive evaluation time frame 1930. Layerstack 1902 is shown to include N number of layers, where N is aninteger. For example, layers 1903 a-e are shown. Each of layers 1903 a-ehave respective start and end times, which may be an absolute time orrelative to an as of time, defining a natural time range for which datacan be retrieved from input data 1920 given a specified as of time.Layers 1903 a-e are labeled generically and can be one of a model layer,a source layer, an operation layer, and a time series layer, eachpointing to a node in a NOTS graph. As discussed above, a node caninclude a source, an operation, a model, or a time series.

Layers 1903 a-e are arranged in order of priority, shown in FIG. 19,from high to low. The priority establishes which one of layers 1903 a-eis used to evaluate time series 1901, the results of which areencapsulated time array 1908. For example, evaluation time frame 1930spans from time, t0, to time, t4. Layering framework 1900 will accessthe highest priority layer based on the time requiring evaluation. Thus,in order to evaluate time series 1908 based on evaluation time frame1930, layering framework 1900 will access layer 1903 e from time, t0, totime, t1, access layer 1903 c from time, t1, to time t2, access layer1903 a from time, t2, to time, t3, access layer 1903 b from time, t3, totime, t4. The priority of the layers can also be used to establish whichlayer to use if a layer is unable to pull in data from its node. Forexample, assume that layer 1903 c points to a node that malfunctions oris no longer accessible. In such a scenario, layering framework 1900would access layer 1903 e and layer 1903 d to evaluate time series 1901from time, t0, to time, t2.

FIG. 20 shows illustrative NOTS system 2000 according to an embodiment.NOTS system 2000 can include source node 2010, model node 2020,operation node 2030, and time series node 2040. Other nodes can be partof system 2000 but are excluded to avoid overcrowding the drawing. Timeseries node 2040 can include layering framework 2049 and time series2041. Layering framework 2049 can include layer stack 2042, whichincludes source layer 2043, model layer 2045, and operation layer 2047.Source layer 2043 can return time array 1 2044 based on data receivedfrom source node 2010. Model layer 2045 can return time array 2 2046based on data received from model node 2020. Operation layer 2047 canreturn time array 3 2048 based on data received from operation node2030. The combination of time arrays 2044, 2046, and 2048 yield timeseries 2041. System 2000 illustrates that in order for time series 2041to be resolved in time series node 2040, all upstream nodes (e.g., shownhere as nodes 2010, 2020, and 2030) need to be resolved. When theupstream nodes are resolved, the data contained therein can then bemapped into time series 2041 via layering framework 2049. The output oftime series 2041 can be provided to another node (not shown), stored ina database, or used for executing an action (e.g., populating a userinterface with graphical or numerical data).

FIGS. 21A-21F shows several different specific examples of time seriesaccording to various embodiments. Each time series (except that shown inFIG. 21A) shows an illustrative ‘as of time’ (AOT), one or more layers,and an evaluation time frame. Each time series has access to input data(not shown) required by each layer contained therein. Each time seriesis represented by the layers contained therein and the evaluation timeframe. FIGS. 21A-21F represent condensed pictograph versions of a timeseries generated or evaluated by a layering framework (e.g., layeringframework 1800). Each of time series 2110, 2120, 2130, 2140, 2150returns a time array. FIG. 21A shows an illustrative empty time series2100. Empty time series 2100 represents that any time series can becreated from a blank slate. When evaluating an empty time series, theresulting time array will always contain only null values, regardless ofthe evaluation time frame.

FIG. 21B shows illustrative source time series 2110 that is evaluatedusing source layer 2111 in conjunction with evaluation time 2119. Sourcelayer 2111 can pull data from a source in an NOTS system and map thepulled data to time series 2110.

FIG. 21C shows illustrative source time series 2120 that is evaluatedusing source layer 2121 and source layer 2122 in conjunction withevaluation time 2129. Source layer 2121 has a higher priority thansource layer 2122. Source layers 2121 and 2122 may pull data from theirrespective sources and map the pulled data to time series 2120.

FIG. 21D shows illustrative model time series 2130 that is evaluatedusing model layer 2131 and time series layer 2132 in conjunction withevaluation time 2139. Model layer 2131 has a higher priority than timeseries layer 2132. Model layer 2131 can pull data from a model in anNOTS system and map the pulled data to time series 2130. Model layer2131 points to a model that is trained or fitted before it is able toproduce data. Depending on the configuration of model layer 2131, theoutput can be a prediction (e.g. if it is a linear regression model) ora transformation (e.g. if it is a principal component analysis model).Example models used by model layer 2131 can include linear regression,neural networks, k-means clustering, principal component analysis, andmin-max scaling.

FIG. 21E shows illustrative time series 2140 that is evaluated usingmodel layer 2141, operational layer 2142, and source layer 2143 inconjunction with evaluation time 2149. Model layer 2141 has a higherpriority than operational layer 2142, which has a higher priority thansource layer 2143. Operational layer 2142 can pull data from anoperation in an NOTS system and map the pulled data to time series 2140.Example operations that operational layer 2142 can point to can includemultiplying two time series, computing a percentile of a normaldistribution, splitting a time series into two smaller sub-arrays.

FIG. 21F shows illustrative time series 2150 that is evaluated usingsource layer 2151, source layer 2152, and model layer 2153 inconjunction with evaluation time 2149. Source layer 2151 has a higherpriority than source layer 2152, which has a higher priority than modellayer 2153.

The time series, models, and transforms of FIGS. 4A-4D, 5, 6, 6A, 7-12,13A, 13B, 14-16 can be created using the layering framework according toembodiments discussed herein. For example, a source time series (e.g.,source time series 420 of FIG. 4A) can embody the evaluation result of atime series node having a source layer. The source layer would point toa source node (not shown in FIG. 4A). As another example, a model timeseries (e.g., model time series 450 of FIG. 4D) can be a time seriesnode including a time series layer pointing to source time series 430and a model layer pointing to model 410. A transform time series can bea time series node having an operational layer. Model 410, for example,may be a model node including at least two source layers pointing to atleast one exogenous/features time series and at least oneendogenous/targets time series.

Users of the NOTS platform can construct any number of time series andarrange them in any order to achieve a desired result. The user canconstruct a NOTS graph using the NOTS platform. An example of a NOTSgraph 2200 is shown in FIG. 22. When any time series within a NOTS graphis evaluated, this triggers all upstream nodes (e.g., other time series,sources, models, or operations) to be evaluated. For many NOTS graphs,data may be introduced by sources such as, for example, sources A-E. Asdiscussed above, the sources are incorporated into a time series via oneor more layers (e.g., source layers). The time series can be transformedby operations or models, or in some embodiments, copied to another timeseries. These transformed time series are transformed throughapplication of one or more layers (as discussed above). NOTS graph 2200is now discussed in more detail.

NOTS graph 2200 includes many nodes arranged in a particular order toproduce time series F. Each node is represented by a source, a timeseries, a model, or operation. As shown, sources A and B are mapped intotime series A via respective source layers 2202 and 2204. Time series Acan be generated using, for example, time series 2120 of FIG. 21C. Timeseries A is provided to operation A, which maps time series A to timeseries D via application of operation layer 2212. Model A receivesexogenous and endogenous input time series a and (3, respectively, whichmay also be referred to as features and targets, respectively and mapsthe output of model A to time series B via application of model layer2214. Source C may be mapped to time series B via application of sourcelayer 2215. Source D may be mapped to time series C via application ofsource layer 2216. Source E may be mapped to time series E viaapplication of source layer 2218. Times series B, C, and D are providedto model B as exogenous inputs and time series E is provided to model Bas an endogenous input. Model B is first trained on its exogenous andendogenous inputs, and then generates outputs based on those inputs,outputs that are mapped to time series F via application of model layer2222. Time series E is also mapped to time series F via application oftime series layer 2224.

When time series F is evaluated according to a user defined evaluationtime frame, all of the nodes upstream of time series F are evaluatedaccordingly so that time series F is populated with the appropriate timearray. For example, assume that time evaluation range is −4 to +8 hourswith respect of an as of time of now. Model B is evaluated, for example,to determine time series data between 0 and +8 hours, and time series Eis evaluated to ascertain time series data between −4 to 0 hours. Thentime series B, C, and D are evaluated with respect to times 0 to +8hours. Then time series A is evaluated for times 0 to +8 hours becauseit is an input required of time series D.

FIG. 23 shows illustrative process 2300 for evaluating time series in anetwork of time series platform according to an embodiment. Starting atstep 2310, a network of time series is accessed. For example, NOTS 2200of FIG. 22 can be accessed. The network of time series includes aplurality of time series that are each evaluated according to arespective layering framework. The respective layering framework caninclude a layer stack including at least one layer arranged in order ofpriority with any other layer included in the layer stack, wherein eachlayer has a start time and an end time, absolute or relative to an as oftime, that defines a time range for which data is pulled from an inputdata set and potentially included in a time array created by therespective layering framework when the time series is evaluated. Thelayering framework can be, for example, layering framework 1800 or 1900,as discussed above. The input data collectively refers to any input dataset that is accessed by a layer. The input data accessed by a layer canbe a time series, an output of a model, an output of an operation, or adata source. Each layer within the layer stack is designed to pull datafrom a specific input data set that consists of other nodes in the NOTS.In some cases, the specific input data set is output provided by anotherone of the time series within the plurality of time series. In othercases, the specific input data set can be a source. A layer within thelayer stack can be a source layer, an operation layer, a time serieslayer, or a model layer.

At step 2320, an evaluation time frame including an evaluation starttime and an evaluation end time can be received. The evaluation timeframe is absolute or relative to an as of time. For example, a user ofthe NOTS platform may desire to obtain data from a specific time seriesin the NOTS for a range of natural time with respect to an as of time.As a specific example, the user may desire to view electricity load froma start date to an end date for a particular as of time. The evaluationtime frame may include time in the future and therefore can includepredicted values from a model that is represented through a layer in thetime series.

At step 2330, the plurality of time series are evaluated by applying thelayering stack of the respective layering framework corresponding toeach of the plurality of time series to the input data set withincontext of the evaluation time frame. For example, in one embodiment, afirst time series is selected from the plurality of time series, thefirst time series associated with a first layering framework including afirst layer that accesses a first input data set from a first node, thefirst layer including a first layer time range. A time overlap betweenthe evaluation time frame and the first layer time range can bedetermined and data can be retrieved from the first node correspondingto the time overlap. The first time series can be populated with theretrieved data.

As another example, assume that a first time series is selected from theplurality of time series and that, the first time series is associatedwith a first layering framework. Further assume that the first layeringframework includes a first layer that accesses a first input data setfrom a first node and a second layer that accesses a second input dataset from a second node. The first layer can include a first layer timerange and the second layer can include a second layer time range. Thefirst layer can have a higher priority than the second layer. A portionof the first layer may overlap a portion of the second layer. In orderto determine how to populate the first time series, first and secondtime overlaps between the evaluation time frame and respective first andsecond layers are determined. When the first time overlap between theevaluation time frame and the first layer time range is determined, datafrom the first data set corresponding to the first time overlap can beretrieved and can be populated with the data retrieved from the firstdata set. When the second time overlap between the evaluation time frameand second layer time range is determined, data from the second data setcorresponding to the second time overlap can be retrieved and used topopulate the first time series. The second time overlap excludes anytime overlap between the first layer time range and the second layertime range because the first layer has priority over the second layer.

At step 2340, data obtained from at least one of the evaluated timeseries can be transmitted for use in executing an action or for displayin a user interface. The data can also be stored in a database ormemory. For example, the data can be displayed in a user interface suchas that shown in FIG. 24. As another example, the data can be used toexecute a purchase or sale of energy, stocks, or commodities.

It should be understood that the steps shown in FIG. 23 are merelyillustrative and that additional steps may be added, re-arranged, oromitted.

FIG. 24 shows illustrative user interface 2400 showing a time seriesgenerated using a NOTS platform according to an embodiment. Userinterface 2400 shows electricity load 2410 from July 17 to July 27 as of12:00 pm July 22. As shown, electricity load 2410 is shown as either asolid line or a dashed line. The solid line represents known andmonitored electricity load and the dashed line represents the forecastedelectricity load obtained from a time series generated using a NOTSplatform.

FIG. 25 shows illustrative process 2500 according to an embodiment.Starting at step 2510, a network of time series comprising a pluralityof nodes arranged according to a user-defined format can be accessed,wherein each node is one of a time series node, an operation node, amodel node, and a source node, and wherein a first node of the pluralityof nodes is a first time series. The user-defined format is an upstreamto downstream format in which any upstream node directly or indirectlyfeeds into a downstream node, and wherein a position of each of theplurality of nodes within the upstream to downstream format is arrangedby a user using a user interface. The source node can be connected to aparticular data source. The operation node executes a statelesstransformation. The model node executes an operation using a fittedmodel. At step 2520, an evaluation time frame including an evaluationstart time and an evaluation end time can be received, wherein theevaluation time is absolute or relative to an as of time.

At step 2530, each of the plurality of nodes can be evaluated accordingto the evaluation time frame to generate a respective time array that isproduced by each of the plurality of nodes, wherein the first timeseries is populated with the time array generated by the first node. Thefirst time series can be evaluated according to a layering framework.The layering framework can include a layer stack including at least onelayer arranged in order of priority with any other layer potentiallyincluded in the layer stack, wherein each layer has a start time and anend time, absolute or relative to an as of time, that defines a timerange for which data is pulled from an input data set and potentiallyincluded in a time array being evaluated by the layering framework whenthe first time series is evaluated. The layer can be a source layer,wherein the source layer is operative to pull source data from a sourcenode. The layer can be an operation layer, wherein the operation layeris operative to pull transformed data obtained from an operation node.The layer can be a model layer, wherein the model layer is operative topull prediction data obtained from a model node. The layer can be a timeseries layer, wherein the time series layer is operative to pull timeseries data from a time series node.

At step 2540, the time array associated with the first time series canbe stored, for example, in a database. At step 2450, the time arrayassociated with the first time series can be displayed in a userinterface.

It should be understood that the steps shown in FIG. 25 are merelyillustrative and that additional steps may be added, re-arranged, oromitted.

FIG. 26 shows illustrative process 2600 according to an embodiment.Starting at step 2610, selection of a plurality of nodes that comprise anetwork of time series can be received, wherein each node is selectedfrom one of a time series node, an operation node, a model node, and asource node. At step 2620, a position within an upstream to downstreamformat can be received via the user interface for each of the pluralityof nodes such that relative positions of each of the plurality of nodesis established for the network of time series. The upstream todownstream format specified which upstream nodes directly or indirectlyfeeds into a downstream node. At step 2630, an evaluation time frameincluding an evaluation start time and an evaluation end time can bereceived, wherein the evaluation time is absolute or relative to an asof time.

At step 2640, at least a first time series node with the network of timeseries is evaluated according to the evaluation time frame such thatwhen the first time series node is evaluated, such evaluation triggersall upstream nodes that are upstream to the first time series node to beevaluated, wherein evaluation results obtained from evaluation of theupstream nodes are directly or indirectly input to the first time seriesto produce a first time series evaluation result. The first time seriesnode can be evaluated according to a layering framework. The layeringframework can include a layer stack including at least one layerarranged in order of priority with any other layer potentially includedin the layer stack, wherein each layer has a start time and an end time,absolute or relative to an as of time, that defines a time range forwhich data is pulled from an input data set included as part of one ofthe upstream nodes and potentially included in a time array beingevaluated by the layering framework when the first time series node isevaluated. At step 2650, the first time series evaluation result can bestored, and displayed in a user interface, at step 2660.

It should be understood that the steps shown in FIG. 26 are merelyillustrative and that additional steps may be added, re-arranged, oromitted.

In one embodiment, a computer implemented method for using a network oftime series platform is provided that includes defining a network oftime series (NOTS) comprising a combination of time series arranged inan upstream to downstream format in which any upstream time seriesdirectly or indirectly feeds into a downstream time series. Defining theNOTS include receiving user input via the NOTS platform selection ofeach time series for inclusion into the combination of time series,where each time series is selected from one of a source time series, atransform time series, and a model time series; arranging, via userinput on the NOTS platform, a position of each time series comprisingthe combination of time series within the upstream to downstream formatof the NOTS; and wherein the combination of time series comprises aplurality of source time series and at least one model time series. Themethod specifies generating predicted values for the at least one modeltime series using the NOTS, and performing an action based on thegenerated predicted values.

In one embodiment, the plurality of time series comprises exogenous timeseries and endogenous time series, wherein a first model of theplurality of models is fit with at least one first exogenous time seriesand one first endogenous time series, wherein the first model isoperative to generate predicted values based on the at least one firstexogenous time series, wherein values associated with the at least onefirst endogenous time series are provided to a first model time seriesof the plurality of model time series for all combinations of naturaltime intervals and as of time intervals, and wherein the predictedvalues for the at least one first endogenous time series generated bythe first model are provided to the first model time series and used tooverwrite the values provided by the at least one first endogenous timeseries for specific combinations of natural time intervals and as oftime intervals.

In one embodiment, each of the source time series, transform timeseries, and the model time series comprises a natural time axis and anas of time axis.

In one embodiment, a source time series, transform time series, or amodel time series within the NOTS is characterized as one of an upstreamtime series, a downstream time series, and both an upstream time seriesand a downstream time series relative to any other source time series,transform time series, or model time series within the NOTS.

In one embodiment, the downstream time series may have a higherintrinsic value than an intrinsic value of upstream time series, andwherein downstream time series produce values that may have lowerconfidence or a lower accuracy than values produced by upstream timeseries.

In one embodiment, at least one of the plurality of source time seriescomprises future predicted values.

In one embodiment, at least one of the model time series is used as aninput to one of the plurality of models.

In one embodiment, the generated predicted values are future predictedvalues.

In one embodiment, the generated predicted values are past predictedvalues.

In one embodiment, the generated predicted values are present predictedvalues.

In one embodiment, the generated predicted values are relative to an asof time.

In one embodiment, the generated predicted values are not relative to anas of time.

In one embodiment, the action is performed external to the network oftime series platform.

In one embodiment, a computer implemented method for using time seriesis provided that includes receiving user inputs via a platform to definea network of time series; receiving user inputs via the platform todefine an evaluation time period; and evaluating the network of timeseries based on the evaluation time period. The evaluation includesaccessing at least one exogenous time series that supplies values to amodel; accessing at least one endogenous time series, wherein the modelis configured to predict values associated with the endogenous timeseries, and wherein the endogenous time series serves as an underlyingtime series for a model time series; populating the model time serieswith values supplied by the underlying endogenous time series for allcombinations of natural time intervals and as of time intervals; usingthe at least one exogenous time series and the at least one endogenoustime series to fit the model; using the fitted model to generatepredicted values based on the at least one exogenous time series; usingthe predicted values to overwrite at least one of the underlying valuesin the model time series for specific combinations of natural timeintervals and as of time intervals; and using the model time series asan input to a second model or as a basis for a user to perform anaction.

In one embodiment, the model time series includes a natural time axisand an as of time axis, wherein an as of time interval within the as oftime axis represents a time from which a predicted value is projectedacross the natural time axis.

In one embodiment, the predicted values for a specific as of timeinterval are relative to the as of time interval.

In one embodiment, the model time series includes the predicted valuesfor natural time intervals relative to the as of time interval, whereina range of natural time intervals spans from a start offset through anend offset.

In one embodiment, the range of natural time intervals exists entirelybefore the as of time interval, spans across the as of time interval, orexists entirely after the as of time interval.

In one embodiment, the predicted values for a specific as of timeinterval are not relative to the as of time interval.

In one embodiment, the model time series includes the predicted valuesfor a fixed range of natural time intervals, wherein the range ofnatural time intervals spans from a start time to an end time.

In one embodiment, the at least one exogenous time series comprisesknown values and predicted future values.

In one embodiment, a computer implemented method for using time seriesis provided that includes receiving a time series; formatting thereceived time series to a standardized time series suitable for use in anetwork of time series platform, the standardized time series comprisinga natural time axis and an as of time axis, wherein an as of timeinterval within the as of time axis represents a time from which anunknown value, known value, or predicted value is projected across thenatural time axis; and using the standardized time series in the networkof time series platform.

In one embodiment, the standardized time series includes onlydeterministically known values.

In one embodiment, the standardized time series includes unknown values,known values, predicted values, or a combination of unknown, known andpredicted values.

In one embodiment, the predicted values are obtained from a fitted modelthat generates the predicted values based on at least one exogenous timeseries.

In one embodiment, the predicted values for a specific as of timeinterval are relative to the as of time interval.

In one embodiment, the model generates the predicted values for a rangeof natural time intervals relative to the as of time intervals, whereinthe range of natural time intervals spans from a start offset through anend offset.

In one embodiment, the range of natural time intervals exists entirelybefore the as of time interval, spans across the as of time interval, orexists entirely after the as of time interval.

In one embodiment, the predicted values for a specific as of timeinterval are not relative to an as of time interval.

In one embodiment, the model generates the predicted values for a fixedrange of natural time intervals, wherein the range of natural timeintervals spans from a start time to an end time.

In one embodiment, a computer implemented method for using time seriesis provided that includes defining a first set of exogenous time series;defining a first set of endogenous time series and a second set ofendogenous time series; inputting the first set of exogenous andendogenous time series to fit a first model; inputting the first set ofexogenous time series to a first fitted model to generate a first set ofpredicted values; using the first set of predicted values to populate afirst model time series for specific combinations of natural timeintervals and as of time intervals, wherein the first model time seriesuses values from the first set of endogenous time series for all othercombinations of natural time intervals and as of time intervals;defining a second set of exogenous time series comprising the firstmodel time series; inputting the second set of exogenous time series andthe second set of endogenous time series to fit a second model;inputting the second set of exogenous time series to a second fittedmodel to generate a second set of predicted values; using the second setof predicted values to populate a second model time series for specificcombinations of natural time intervals and as of time intervals, whereinthe second model time series uses values from the second set ofendogenous time series for all other combinations of natural timeintervals and as of time intervals; and executing an action in responseto at least one value from the second model time series, wherein each ofthe first set of exogenous time series, the second set of exogenous timeseries, the first model time series, the first set of endogenous timeseries, the second model time series, and the second set of endogenoustime series is formatted according to a standardized time series formatcomprising a natural time axis and an as of time axis, wherein an as oftime interval within the as of time axis represents a time from which anunknown, known or predicted value in any of the first model time seriesand the second model time series is projected across the natural timeaxis.

In one embodiment, the method further includes displaying, in a userinterface, the output from the second model time series.

In one embodiment, the method further includes determining whether theat least one time series is suitable for use in the first set ofexogenous time series, wherein the at least one time series is a sourcetime series, a transform time series, or a model time series. If the atleast one time series is not determined to be suitable: using a backuptime series; using a backup value; or providing a null output. If the atleast one time series is determined to be suitable, incorporating thatat least one time series into the first set of exogenous time series.

In one embodiment, the method further includes defining a third set ofexogenous time series; defining a third set of endogenous time series;inputting the third set of exogenous and endogenous time series to fit athird model; inputting the third set of exogenous time series to a thirdfitted model to generate a third set of predicted values; using thethird set of predicted values to populate a third set of model timeseries for specific combinations of natural time intervals and as oftime intervals, wherein the third set of model time series uses valuesfrom a third set of endogenous time series for all other combinations ofnatural time intervals and as of time intervals; and wherein the secondset of exogenous time series further comprises the third model timeseries.

In one embodiment, the second set of exogenous time series furthercomprises a source time series.

In one embodiment, the first set of exogenous time series comprise atemperature time series, a humidity time series, a cloud coverage timeseries, wherein the first set of endogenous time series comprise anelectricity load time series; wherein the third set of exogenous timeseries comprises a solar irradiance time series and the cloud coveragetime series, wherein the third set of endogenous time series comprise ansolar electricity generation time series; wherein the first model is anelectricity load model and the first model time series is an electricityload time series; wherein the third model is a solar electricitygeneration model and the third model time series is a solar electricitygeneration time series; wherein the second set of exogenous time seriescomprises the electrical load time series, the solar energy generationtime series, and an oil price time series, wherein the second set ofendogenous time series comprise an electricity price time series;wherein the second model is a electricity price model and the secondmodel time series is an electricity price time series; and wherein theaction executed in response to values derived from the electricity pricemodel time series comprises purchasing electricity in an electricitywholesale market.

In one embodiment, a monetary value associated with the second modeltime series is higher than a monetary value associated with the firstmodel time series.

In one embodiment, a network of time series platform is provided thatincludes an input adapter configured to receive time series data from aplurality of data sources; a model engine, and a transform engine. Themodel engine is operative to manage a plurality of models; fit at leastone model using at least one exogenous time series and at least oneendogenous time series received from the time series engine; store theresulting fit result in a database; generate predicted values using atleast one exogenous time series received from the time series engine andat least one fitted model; store the resulting predict result in adatabase; create at least one model time series which uses the valuesfrom the at least one endogenous time series for all combinations of asof time intervals and natural time intervals, and the predicted valuesfrom the stored predict results to overwrite values for specificcombinations of as of time intervals and natural time intervals; andcommit the at least one model time series to the plurality of timeseries managed by the time series engine. The transform engine isoperative to manage a plurality of stateless transformations; apply atleast one stateless transformation to at least one time series receivedfrom the time series engine; create a transform time series thatcontains the values that are the result of the stateless transformation;and commit the transform time series to the plurality of time seriesmanaged by the time series engine. The platform includes a time seriesengine operative to: manage a plurality of time series including sourcetime series, transform time series, and model time series. The platformincludes an output adapter configured to convert a time series to a userdefined format; and transmit the known or predicted values in the userdefined format to a user device or user service.

In one embodiment, each of the plurality of time series is standardizedaccording to a format comprising a natural time axis and an as of timeaxis, wherein an as of time interval within the as of time axisrepresents a time from which a value is projected across the naturaltime axis.

In one embodiment, the time series engine is configured to access adatabase comprising at least a subset of the plurality of time series;and retrieve at least one time series from the database for use in thenetwork of time series.

In one embodiment, the input adapter is configured to receive timeseries data from external sources; and format the received time seriesdata into a standardized format suitable for use in the network of timeseries.

In one embodiment, the model time series is a first model series, thenetwork of time series further comprises a second model time series,wherein the first model time series is used as an input to a secondmodel that is responsible for generating predicted values that populatethe second model time series.

In one embodiment, the method further includes a model adapter operativeto enable the model engine to use a first user model located remote fromthe system in lieu of one of the plurality of native models maintainedby the model engine.

In one embodiment, the model engine is operative to generate, using thefirst user model, the predicted values for the at least one endogenoustime series based on the at least one exogenous time series.

In one embodiment, the plurality of data sources are provided byexternal data vendors.

In one embodiment, a network of time series system is provided thatincludes an input adapter configured to receive data from a plurality ofdata sources; a model engine operative manage a plurality of models; atransform engine operative manage a plurality of statelesstransformations; and a time series engine operative to manage aplurality of time series including source time series, transform timesseries, and model time series. The model engine, the transform engine,and the time series engine are collectively operative to define anetwork of time series to include at least one exogenous time series, atleast one endogenous times series, a model time series, and at least onemodel, wherein the at least one exogenous time series and endogenoustime series are populated with data received from one of the pluralityof data sources; and generate a predicted value for inclusion into themodel time series using the network of time series.

In one embodiment, the network further includes an output adapterconfigured to convert the model time series to a user defined format andtransmit the predicted value in the user defined format to a user deviceor user service.

In one embodiment, each of the plurality of time series is standardizedaccording to a format comprising a natural time axis and an as of timeaxis, wherein an as of time interval within the as of time axisrepresents a time from which a value is projected across the naturaltime axis.

In one embodiment, the time series engine is configured to access adatabase comprising at least a subset of the plurality of time seriesand retrieve at least one time series from the database for use in thenetwork of time series.

In one embodiment, the input adapter is configured to receive timeseries data and format the received time series data into a standardizedformat suitable for use in the network of time series.

In one embodiment, the model time series is a first model series, thenetwork of time series further comprises a second model time series,wherein the first model time series is used as an input responsible forpopulating the second model time series.

In one embodiment, the time series further includes a model engineoperative to use models to predict values for an existing time series,which are used to create new model time series for use by the timeseries engine.

In one embodiment, the time series further includes a transform engineoperative to generate a new time series by applying statelesstransformations to one or more of the existing plurality of time series,wherein the resulting new transform time series is added to theplurality of time series managed by the time series engine.

In one embodiment, the model engine is operative to fit each of theplurality of models using at least one exogenous time series and atleast one endogenous time series.

In one embodiment, the model engine is operative to select a first modelwithin the plurality of models for use in the network of time seriesgenerate, using the first model, the predicted values for the at leastone endogenous time series based on the at least one exogenous timeseries.

In one embodiment, the time series further includes a model adapteroperative to enable the model engine to use a first user model locatedremote from the system in lieu of one of the plurality of native modelsmaintained by the model engine.

In one embodiment, the model engine is operative to generate, using thefirst user model, the predicted values for the at least one endogenoustime series based on the at least one exogenous time series.

In one embodiment, the plurality of data sources are data vendors.

In one embodiment, a computer-implemented method for evaluating timeseries in a network of time series platform is provided that includesaccessing a network of time series comprising a plurality of time seriesthat are each evaluated according to a respective layering framework.The respective layering framework includes a layer stack including atleast one layer arranged in order of priority with any other layerincluded in the layer stack, wherein each layer has a start time and anend time, absolute or relative to an as of time, that defines a timerange for which data is pulled from an input data set and potentiallyincluded in a time array created by the respective layering frameworkwhen the time series is evaluated. The method includes receiving anevaluation time frame including an evaluation start time and anevaluation end time, which is absolute or relative to an as of time;evaluating the plurality of time series by applying the layering stackof the respective layering framework corresponding to each of theplurality of time series to the input data set within context of theevaluation time frame; and transmitting data obtained from at least oneof the evaluated time series for use in executing an action or fordisplay in a user interface.

In one embodiment, wherein applying the layering stack of the respectivelayering framework corresponding to each of the plurality of time seriesto the input data within context of the evaluation time frame includesselecting a first layer within the at least one layer based on the timerange of the first layer that overlaps the evaluation time range and thepriority of the first layer; and using the selected first layer toretrieve data from the input data set to populate the time series.

In one embodiment, wherein applying the layering stack of the respectivelayering framework corresponding to each of the plurality of time seriesto the input data set within context of the evaluation time frameincludes selecting a first time series from the plurality of timeseries, the first time series associated with a first layering frameworkcomprising a first layer that accesses a first input data set, the firstlayer including a first layer time range; determining a time overlapbetween the evaluation time frame and the first layer time range;retrieving data from the first data set corresponding to the timeoverlap; and populating the first time series with the retrieved data.

In one embodiment, wherein applying the layering stack of the respectivelayering framework corresponding to each of the plurality of time seriesto the input data within context of the evaluation time frame includesselecting a first time series and second time series from the pluralityof time series, the first time series associated with a first layeringframework comprising a first layer that accesses a first input data setand a second layer that accesses a second input data set, the firstlayer including a first layer time range, the second layer including asecond layer time range, wherein the first layer has a higher prioritythan the second layer; determining a first time overlap between theevaluation time frame and the first layer time range; retrieving datafrom the first data set corresponding to the first time overlap;populating the first time series with the data retrieved from the firstdata set; determining a second time overlap between the evaluation timeframe and second layer time range, wherein the second time overlapexcludes any time overlap between the first layer time range and thesecond layer time range; retrieving data from the second data setcorresponding to the second time overlap; populating the first timeseries with the data retrieved from the second data set.

In one embodiment, the input data accessed by a layer is selected fromthe group consisting of a time series, an output of a model, an outputof an operation, or a source.

In one embodiment, each layer within the layer stack is designed to pulldata from a specific input data set, wherein the input data comprisesthe specific input data set.

In one embodiment, the specific input data set is output provided byanother one of the time series within the plurality of time series.

In one embodiment, the specific input data set is a source.

In one embodiment, a layer within the layer stack is selected from asource layer, an operation layer, a time series layer, and a modellayer.

In one embodiment, a network of time series platform is provided thatincludes a processor; and a non-transitory computer-readable storagemedium including instructions stored thereon, which when executed by theprocessor, cause the platform to perform operations including: accessinga network of time series comprising a plurality of time series that areeach evaluated according to a respective layering framework, therespective layering framework including: a layer stack including atleast one layer arranged in order of priority with any other layerincluded in the layer stack, wherein each layer has a start time and anend time that defines a time range for which data is pulled from inputdata and potentially included in a time series being evaluated by therespective layering framework; receiving an evaluation time frameincluding an evaluation start time and an evaluation end time, which isabsolute or relative to an as of time; evaluating the plurality of timeseries by applying the layering stack of the respective layeringframework corresponding to each of the plurality of time series to theinput data within context of the evaluation time frame; and transmittingdata obtained from at least one of the evaluated time series for use inexecuting an action or for display in a user interface.

In one embodiment, the platform can perform operations includingselecting a first layer within the at least one layer based on the timerange of the first layer that overlaps the evaluation time range and thepriority of the first layer; and using the selected first layer toretrieve data from the input data to populate the time series.

In one embodiment, the platform can perform operations includingselecting a first time series from the plurality of time series, thefirst time series associated with a first layering framework comprisinga first layer that accesses a first input data set, the first layerincluding a first layer time range; determining a time overlap betweenthe evaluation time frame and the first layer time range; retrievingdata from the first data set corresponding to the time overlap; andpopulating the first time series with the retrieved data.

In one embodiment, the platform can perform operations includingselecting a first time series and second time series from the pluralityof time series, the first time series associated with a first layeringframework comprising a first layer that accesses a first input data setand a second layer that accesses a second input data set, the firstlayer including a first layer time range, the second layer including asecond layer time range, wherein the first layer has a higher prioritythan the second layer; determining a first time overlap between theevaluation time frame and the first layer time range; retrieving datafrom the first data set corresponding to the first time overlap; andpopulating the first time series with the data retrieved from the firstdata set; determining a second time overlap between the evaluation timeframe and second layer time range, wherein the second time overlapexcludes any time overlap between the first layer time range and thesecond layer time range; retrieving data from the second data setcorresponding to the second time overlap; populating the first timeseries with the data retrieved from the second data set.

In one embodiment, the input data accessed by a layer is selected fromthe group consisting of a time series, an output of a model, an outputof an operation, or a source.

In one embodiment, each layer within the layer stack is designed to pulldata from a specific input data set, wherein the input data comprisesthe specific input data set.

In one embodiment, the specific input data set is output provided byanother one of the time series within the plurality of time series.

In one embodiment, the specific input data set is a data source.

In one embodiment, a layer within the layer stack is selected from asource layer, an operation layer, a time series layer, and a modellayer.

In one embodiment, a method is provided for accessing a network of timeseries comprising a plurality of nodes arranged according to auser-defined format, wherein each node is one of a time series node, anoperation node, a model node, and a source node, and wherein a firstnode of the plurality of nodes is a first time series; receiving anevaluation time frame including an evaluation start time and anevaluation end time, wherein the evaluation time is absolute or relativeto an as of time; evaluating each of the plurality of nodes according tothe evaluation time frame to generate a respective time array that isproduced by each of the plurality of nodes, wherein the first timeseries is populated with the time array generated by the first node;storing the time array associated with the first time series; anddisplaying the time array associated with the first time series in auser interface.

In one embodiment, the user-defined format is an upstream to downstreamformat in which any upstream node directly or indirectly feeds into adownstream node, and wherein a position of each of the plurality ofnodes within the upstream to downstream format is arranged by a userusing a user interface.

In one embodiment, the first time series is a downstream node.

In one embodiment, the first time series is evaluated according to alayering framework, the layering framework including a layer stackincluding at least one layer arranged in order of priority with anyother layer potentially included in the layer stack, wherein each layerhas a start time and an end time, absolute or relative to an as of time,that defines a time range for which data is pulled from an input dataset and potentially included in a time array being evaluated by thelayering framework when the first time series is evaluated.

In one embodiment, a first of the at least one layer is a source layer,wherein the source layer is operative to pull source data from a sourcenode.

In one embodiment, a second of the at least one layer is an operationlayer, wherein the operation layer is operative to pull transformed dataobtained from an operation node.

In one embodiment, a third of the at least one layer is a model layer,wherein the model layer is operative to pull prediction data obtainedfrom a model node.

In one embodiment, a fourth of the at least one layer is a time serieslayer, wherein the time series layer is operative to pull time seriesdata from a time series node.

In one embodiment, wherein the source node is connected to a particulardata source.

In one embodiment, the operation node executes a statelesstransformation.

In one embodiment, the model node executes an operation using a fittedmodel.

In one embodiment, a system is provide that includes one or moreprocessors; one or more memories to store one or more machine-readableinstructions that, as a result of being performed by the one or moreprocessors, cause the system to at least: receive via a user interfaceselection of a plurality of nodes that comprise a network of timeseries, wherein each node is selected from one of a time series node, anoperation node, a model node, and a source node; receive via the userinterface a position within an upstream to downstream format in whichany upstream node directly or indirectly feeds into a downstream nodefor each of the plurality of nodes such that relative positions of eachof the plurality of nodes is established for the network of time series;receive an evaluation time frame including an evaluation start time andan evaluation end time, wherein the evaluation time is absolute orrelative to an as of time; evaluate at least a first time series nodewith the network of time series according to the evaluation time framesuch that when the first time series node is evaluated, such evaluationtriggers all upstream nodes that are upstream to the first time seriesnode to be evaluated, wherein evaluation results obtained fromevaluation of the upstream nodes are directly or indirectly input to thefirst time series to produce a first time series evaluation result;store the first time series evaluation result; and display the firsttime series evaluation result in a user interface.

In one embodiment, that instruction can cause the system to at leastevaluate the first time series node according to a layering framework,the layering framework including a layer stack including at least onelayer arranged in order of priority with any other layer potentiallyincluded in the layer stack, wherein each layer has a start time and anend time, absolute or relative to an as of time, that defines a timerange for which data is pulled from an input data set included as partof one of the upstream nodes and potentially included in a time arraybeing evaluated by the layering framework when the first time seriesnode is evaluated.

In one embodiment, a first of the at least one layer is a source layer,wherein the source layer is operative to pull source data from a sourcenode.

In one embodiment, a second of the at least one layer is an operationlayer, wherein the operation layer is operative to pull transformed dataobtained from an operation node.

In one embodiment, a third of the at least one layer is a model layer,wherein the model layer is operative to pull prediction data obtainedfrom a model node.

In one embodiment, a fourth of the at least one layer is a time serieslayer, wherein the time series layer is operative to pull time seriesdata from a time series node.

FIG. 17 is a block diagram of a special-purpose computer system 1700according to an embodiment. For example, platform 1200 or any of themethods described herein may be implemented as a special-purposecomputer system 1700. The methods and processes described herein maysimilarly be implemented by tangible, non-transitory computer readablestorage mediums and/or computer-program products that direct a computersystem to perform the actions of the methods and processes describedherein. Each such computer-program product may comprise sets ofinstructions (e.g., codes) embodied on a computer-readable medium thatdirects the processor of a computer system to perform correspondingoperations. The instructions may be configured to run in sequentialorder, or in parallel (such as under different processing threads), orin a combination thereof.

Special-purpose computer system 1700 comprises a computer 1702, amonitor 104 coupled to computer 1702, one or more additional user outputdevices 1706 (optional) coupled to computer 1702, one or more user inputdevices 1708 (e.g., keyboard, mouse, track ball, touch screen) coupledto computer 1702, an optional communications interface 1710 coupled tocomputer 1702, and a computer-program product including a tangiblecomputer-readable storage medium 1712 in or accessible to computer 1702.Instructions stored on computer-readable storage medium 1712 may directsystem 1700 to perform the methods and processes described herein.Computer 1702 may include one or more processors 1714 that communicatewith a number of peripheral devices via a bus subsystem 1716. Theseperipheral devices may include user output device(s) 1706, user inputdevice(s) 1708, communications interface 1710, and a storage subsystem,such as random access memory (RAM) 1718 and non-volatile storage drive1720 (e.g., disk drive, optical drive, solid state drive), which areforms of tangible computer-readable memory.

Computer-readable medium 1712 may be loaded into random access memory1718, stored in non-volatile storage drive 1720, or otherwise accessibleto one or more components of computer 1702. Each processor 1714 maycomprise a microprocessor, such as a microprocessor from Intel® orAdvanced Micro Devices, Inc.®, or the like. To support computer-readablemedium 1712, the computer 1702 runs an operating system that handles thecommunications between computer-readable medium 1712 and the above-notedcomponents, as well as the communications between the above-notedcomponents in support of the computer-readable medium 1712. Exemplaryoperating systems include Windows® or the like from MicrosoftCorporation, Solaris® from Sun Microsystems, LINUX, UNIX, and the like.In many embodiments and as described herein, the computer-programproduct may be an apparatus (e.g., a hard drive including case,read/write head, etc., a computer disc including case, a memory cardincluding connector, case, etc.) that includes a computer-readablemedium (e.g., a disk, a memory chip, etc.). In other embodiments, acomputer-program product may comprise the instruction sets, or codemodules, themselves, and be embodied on a computer-readable medium.

User input devices 1708 include all possible types of devices andmechanisms to input information to computer system 1702. These mayinclude a keyboard, a keypad, a mouse, a scanner, a digital drawing pad,a touch screen incorporated into the display, audio input devices suchas voice recognition systems, microphones, and other types of inputdevices. In various embodiments, user input devices 1708 are typicallyembodied as a computer mouse, a trackball, a track pad, a joystick,wireless remote, a drawing tablet, a voice command system. User inputdevices 1708 typically allow a user to select objects, icons, text andthe like that appear on the monitor 1704 via a command such as a clickof a button or the like. User output devices 1706 include all possibletypes of devices and mechanisms to output information from computer1702. These may include a display (e.g., monitor 1704), printers,non-visual displays such as audio output devices, etc.

Communications interface 1710 provides an interface to othercommunication networks and devices and may serve as an interface toreceive data from and transmit data to other systems, WANs and/or theInternet, via a wired or wireless communication network 1722.Embodiments of communications interface 1710 typically include anEthernet card, a modem (telephone, satellite, cable, ISDN), a(asynchronous) digital subscriber line (DSL) unit, a FireWire®interface, a USB® interface, a wireless network adapter, and the like.For example, communications interface 1710 may be coupled to a computernetwork, to a FireWire® bus, or the like. In other embodiments,communications interface 170 may be physically integrated on themotherboard of computer 1702, and/or may be a software program, or thelike.

RAM 1718 and non-volatile storage drive 1720 are examples of tangiblecomputer-readable media configured to store data such ascomputer-program product embodiments of the present invention, includingexecutable computer code, human-readable code, or the like. Other typesof tangible computer-readable media include floppy disks, removable harddisks, optical storage media such as CD-ROMs, DVDs, bar codes,semiconductor memories such as flash memories, read-only-memories(ROMs), battery-backed volatile memories, networked storage devices, andthe like. RAM 1718 and non-volatile storage drive 1720 may be configuredto store the basic programming and data constructs that provide thefunctionality of various embodiments of the present invention, asdescribed above.

Software instruction sets that provide the functionality of the presentinvention may be stored in computer-readable medium 1712, RAM 1718,and/or non-volatile storage drive 1720. These instruction sets or codemay be executed by the processor(s) 1714. Computer-readable medium 1712,RAM 1718, and/or non-volatile storage drive 1720 may also provide arepository to store data and data structures used in accordance with thepresent invention. RAM 1718 and non-volatile storage drive 1720 mayinclude a number of memories including a main random access memory (RAM)to store instructions and data during program execution and a read-onlymemory (ROM) in which fixed instructions are stored. RAM 1718 andnon-volatile storage drive 1720 may include a file storage subsystemproviding persistent (non-volatile) storage of program and/or datafiles. RAM 1718 and non-volatile storage drive 1720 may also includeremovable storage systems, such as removable flash memory.

Bus subsystem 1716 provides a mechanism to allow the various componentsand subsystems of computer 1702 communicate with each other as intended.Although bus subsystem 1716 is shown schematically as a single bus,alternative embodiments of the bus subsystem may utilize multiple bussesor communication paths within the computer 1702.

For a firmware and/or software implementation, the methodologies may beimplemented with modules (e.g., procedures, functions, and so on) thatperform the functions described herein. Any machine-readable mediumtangibly embodying instructions may be used in implementing themethodologies described herein. For example, software codes may bestored in a memory. Memory may be implemented within the processor orexternal to the processor. As used herein the term “memory” refers toany type of long term, short term, volatile, nonvolatile, or otherstorage medium and is not to be limited to any particular type of memoryor number of memories, or type of media upon which memory is stored.

Moreover, as disclosed herein, the term “storage medium” may representone or more memories for storing data, including read only memory (ROM),random access memory (RAM), magnetic RAM, core memory, magnetic diskstorage mediums, optical storage mediums, flash memory devices and/orother machine readable mediums for storing information. The term“machine-readable medium” includes, but is not limited to portable orfixed storage devices, optical storage devices, wireless channels,and/or various other storage mediums capable of storing that contain orcarry instruction(s) and/or data.

The various embodiments further can be implemented in a wide variety ofoperating environments, which in some cases can include one or more usercomputers, computing devices or processing devices which can be used tooperate any of a number of applications. In an embodiment, user orclient devices include any of a number of computers, such as desktop,laptop or tablet computers running a standard operating system, as wellas cellular (mobile), wireless and handheld devices running mobilesoftware and capable of supporting a number of networking and messagingprotocols and such a system also includes a number of workstationsrunning any of a variety of commercially-available operating systems andother known applications for purposes such as development and databasemanagement. In an embodiment, these devices also include otherelectronic devices, such as dummy terminals, thin-clients, gamingsystems and other devices capable of communicating via a network, andvirtual devices such as virtual machines, hypervisors, softwarecontainers utilizing operating-system level virtualization and othervirtual devices or non-virtual devices supporting virtualization capableof communicating via a network.

In an embodiment, a system utilizes at least one network that would befamiliar to those skilled in the art for supporting communications usingany of a variety of commercially-available protocols, such asTransmission Control Protocol/Internet Protocol (“TCP/IP”), UserDatagram Protocol (“UDP”), protocols operating in various layers of theOpen System Interconnection (“OSI”) model, File Transfer Protocol(“FTP”), Universal Plug and Play (“UpnP”), Network File System (“NFS”),Common Internet File System (“CIFS”) and other protocols. The network,in an embodiment, is a local area network, a wide-area network, avirtual private network, the Internet, an intranet, an extranet, apublic switched telephone network, an infrared network, a wirelessnetwork, a satellite network, and any combination thereof. In anembodiment, a connection-oriented protocol is used to communicatebetween network endpoints such that the connection-oriented protocol(sometimes called a connection-based protocol) is capable oftransmitting data in an ordered stream. In an embodiment, aconnection-oriented protocol can be reliable or unreliable. For example,the TCP protocol is a reliable connection-oriented protocol.Asynchronous Transfer Mode (“ATM”) and Frame Relay are unreliableconnection-oriented protocols. Connection-oriented protocols are incontrast to packet-oriented protocols such as UDP that transmit packetswithout a guaranteed ordering.

In an embodiment, the system utilizes a web server that run one or moreof a variety of server or mid-tier applications, including HypertextTransfer Protocol (“HTTP”) servers, FTP servers, Common GatewayInterface (“CGI”) servers, data servers, Java servers, Apache servers,and business application servers. In an embodiment, the one or moreservers are also capable of executing programs or scripts in response torequests from user devices, such as by executing one or more webapplications that are implemented as one or more scripts or programswritten in any programming language, such as Java®, C, C # or C++, orany scripting language, such as Ruby, PHP, Perl, Python or TCL, as wellas combinations thereof. In an embodiment, the one or more servers alsoinclude database servers, including without limitation thosecommercially available from Oracle®, Microsoft®, Sybase®, and IBM® aswell as open-source servers such as My SQL, Postgres, SQLite, MongoDB,and any other server capable of storing, retrieving, and accessingstructured or unstructured data. In an embodiment, a database serverincludes table-based servers, document-based servers, unstructuredservers, relational servers, non-relational servers, or combinations ofthese and/or other database servers.

In an embodiment, the system includes a variety of data stores and othermemory and storage media as discussed above which can reside in avariety of locations, such as on a storage medium local to (and/orresident in) one or more of the computers or remote from any or all ofthe computers across the network. In an embodiment, the informationresides in a storage-area network (“SAN”) familiar to those skilled inthe art and, similarly, any necessary files for performing the functionsattributed to the computers, servers or other network devices are storedlocally and/or remotely, as appropriate. In an embodiment where a systemincludes computerized devices, each such device can include hardwareelements that are electrically coupled via a bus, the elementsincluding, for example, at least one central processing unit (“CPU” or“processor”), at least one input device (e.g., a mouse, keyboard,controller, touch screen, or keypad), at least one output device (e.g.,a display device, printer, or speaker), at least one storage device suchas disk drives, optical storage devices, and solid-state storage devicessuch as random access memory (“RAM”) or read-only memory (“ROM”), aswell as removable media devices, memory cards, flash cards, etc., andvarious combinations thereof.

In an embodiment, such a device also includes a computer-readablestorage media reader, a communications device (e.g., a modem, a networkcard (wireless or wired), an infrared communication device, etc.), andworking memory as described above where the computer-readable storagemedia reader is connected with, or configured to receive, acomputer-readable storage medium, representing remote, local, fixed,and/or removable storage devices as well as storage media fortemporarily and/or more permanently containing, storing, transmitting,and retrieving computer-readable information. In an embodiment, thesystem and various devices also typically include a number of softwareapplications, modules, services, or other elements located within atleast one working memory device, including an operating system andapplication programs, such as a client application or web browser. In anembodiment, customized hardware is used and/or particular elements areimplemented in hardware, software (including portable software, such asapplets), or both. In an embodiment, connections to other computingdevices such as network input/output devices are employed.

In an embodiment, storage media and computer readable media forcontaining code, or portions of code, include any appropriate mediaknown or used in the art, including storage media and communicationmedia, such as, but not limited to, volatile and non-volatile, removableand non-removable media implemented in any method or technology forstorage and/or transmission of information such as computer readableinstructions, data structures, program modules or other data, includingRAM, ROM, Electrically Erasable Programmable Read-Only Memory(“EEPROM”), flash memory or other memory technology, Compact DiscRead-Only Memory (“CD-ROM”), digital versatile disk (“DVD”) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices or any other medium which canbe used to store the desired information and which can be accessed bythe system device. Based on the disclosure and teachings providedherein, a person of ordinary skill in the art will appreciate other waysand/or methods to implement the various embodiments.

The specification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense. It will, however, beevident that various modifications and changes may be made thereuntowithout departing from the broader spirit and scope of the invention asset forth in the claims.

Other variations are within the spirit of the present disclosure. Thus,while the disclosed techniques are susceptible to various modificationsand alternative constructions, certain illustrated embodiments thereofare shown in the drawings and have been described above in detail. Itshould be understood, however, that there is no intention to limit theinvention to the specific form or forms disclosed, but on the contrary,the intention is to cover all modifications, alternative constructions,and equivalents falling within the spirit and scope of the invention, asdefined in the appended claims.

The use of the terms “a” and “an” and “the” and similar referents in thecontext of describing the disclosed embodiments (especially in thecontext of the following claims) are to be construed to cover both thesingular and the plural, unless otherwise indicated herein or clearlycontradicted by context. Similarly, use of the term “or” is to beconstrued to mean “and/or” unless contradicted explicitly or by context.The terms “comprising,” “having,” “including,” and “containing” are tobe construed as open-ended terms (i.e., meaning “including, but notlimited to,”) unless otherwise noted. The term “connected,” whenunmodified and referring to physical connections, is to be construed aspartly or wholly contained within, attached to, or joined together, evenif there is something intervening. Recitation of ranges of values hereinare merely intended to serve as a shorthand method of referringindividually to each separate value falling within the range, unlessotherwise indicated herein and each separate value is incorporated intothe specification as if it were individually recited herein. The use ofthe term “set” (e.g., “a set of items”) or “subset” unless otherwisenoted or contradicted by context, is to be construed as a nonemptycollection comprising one or more members. Further, unless otherwisenoted or contradicted by context, the term “subset” of a correspondingset does not necessarily denote a proper subset of the correspondingset, but the subset and the corresponding set may be equal. The use ofthe phrase “based on,” unless otherwise explicitly stated or clear fromcontext, means “based at least in part on” and is not limited to “basedsolely on.”

Conjunctive language, such as phrases of the form “at least one of A, B,and C,” or “at least one of A, B and C,” (i.e., the same phrase with orwithout the Oxford comma) unless specifically stated otherwise orotherwise clearly contradicted by context, is otherwise understood withthe context as used in general to present that an item, term, etc., maybe either A or B or C, any nonempty subset of the set of A and B and C,or any set not contradicted by context or otherwise excluded thatcontains at least one A, at least one B, or at least one C. Forinstance, in the illustrative example of a set having three members, theconjunctive phrases “at least one of A, B, and C” and “at least one ofA, B and C” refer to any of the following sets: {A}, {B}, {C}, {A, B},{A, C}, {B, C}, {A, B, C}, and, if not contradicted explicitly or bycontext, any set having {A}, {B}, and/or {C} as a subset (e.g., setswith multiple “A”). Thus, such conjunctive language is not generallyintended to imply that certain embodiments require at least one of A, atleast one of B and at least one of C each to be present. Similarly,phrases such as “at least one of A, B, or C” and “at least one of A, Bor C” refer to the same as “at least one of A, B, and C” and “at leastone of A, B and C” refer to any of the following sets: {A}, {B}, {C},{A, B}, {A, C}, {B, C}, {A, B, C}, unless differing meaning isexplicitly stated or clear from context. In addition, unless otherwisenoted or contradicted by context, the term “plurality” indicates a stateof being plural (e.g., “a plurality of items” indicates multiple items).The number of items in a plurality is at least two, but can be more whenso indicated either explicitly or by context.

Operations of processes described herein can be performed in anysuitable order unless otherwise indicated herein or otherwise clearlycontradicted by context. In an embodiment, a process such as thoseprocesses described herein (or variations and/or combinations thereof)is performed under the control of one or more computer systemsconfigured with executable instructions and is implemented as code(e.g., executable instructions, one or more computer programs or one ormore applications) executing collectively on one or more processors, byhardware or combinations thereof. In an embodiment, the code is storedon a computer-readable storage medium, for example, in the form of acomputer program comprising a plurality of instructions executable byone or more processors. In an embodiment, a computer-readable storagemedium is a non-transitory computer-readable storage medium thatexcludes transitory signals (e.g., a propagating transient electric orelectromagnetic transmission) but includes non-transitory data storagecircuitry (e.g., buffers, cache, and queues) within transceivers oftransitory signals. In an embodiment, code (e.g., executable code orsource code) is stored on a set of one or more non-transitorycomputer-readable storage media having stored thereon executableinstructions that, when executed (i.e., as a result of being executed)by one or more processors of a computer system, cause the computersystem to perform operations described herein. The set of non-transitorycomputer-readable storage media, in an embodiment, comprises multiplenon-transitory computer-readable storage media and one or more ofindividual non-transitory storage media of the multiple non-transitorycomputer-readable storage media lack all of the code while the multiplenon-transitory computer-readable storage media collectively store all ofthe code. In an embodiment, the executable instructions are executedsuch that different instructions are executed by differentprocessors—for example, a non-transitory computer-readable storagemedium store instructions and a main CPU execute some of theinstructions while a graphics processor unit executes otherinstructions. In an embodiment, different components of a computersystem have separate processors and different processors executedifferent subsets of the instructions.

Accordingly, in an embodiment, computer systems are configured toimplement one or more services that singly or collectively performoperations of processes described herein and such computer systems areconfigured with applicable hardware and/or software that enable theperformance of the operations. Further, a computer system that implementan embodiment of the present disclosure is a single device and, inanother embodiment, is a distributed computer systems comprisingmultiple devices that operate differently such that the distributedcomputer system performs the operations described herein and such that asingle device does not perform all operations.

The use of any and all examples, or exemplary language (e.g., “such as”)provided herein, is intended merely to better illuminate embodiments ofthe invention and does not pose a limitation on the scope of theinvention unless otherwise claimed. No language in the specificationshould be construed as indicating any non-claimed element as essentialto the practice of the invention.

Embodiments of this disclosure are described herein, including the bestmode known to the inventors for carrying out the invention. Variationsof those embodiments may become apparent to those of ordinary skill inthe art upon reading the foregoing description. The inventors expectskilled artisans to employ such variations as appropriate and theinventors intend for embodiments of the present disclosure to bepracticed otherwise than as specifically described herein. Accordingly,the scope of the present disclosure includes all modifications andequivalents of the subject matter recited in the claims appended heretoas permitted by applicable law. Moreover, any combination of theabove-described elements in all possible variations thereof isencompassed by the scope of the present disclosure unless otherwiseindicated herein or otherwise clearly contradicted by context.

Whereas many alterations and modifications of the present invention willno doubt become apparent to a person of ordinary skill in the art afterhaving read the foregoing description, it is to be understood that theparticular embodiments shown and described by way of illustration are inno way intended to be considered limiting.

1.-37. (canceled)
 38. A network of time series platform, comprising: aninput adapter configured to receive time series data from a plurality ofdata sources; a model engine operative to: manage a plurality of models;fit at least one model using at least one exogenous time series and atleast one endogenous time series received from the time series engine;store the resulting fit result in a database; generate predicted valuesusing at least one exogenous time series received from the time seriesengine and at least one fitted model; store the resulting predict resultin a database; create at least one model time series which uses thevalues from the at least one endogenous time series for all combinationsof as of time intervals and natural time intervals, and the predictedvalues from the stored predict results to overwrite values for specificcombinations of as of time intervals and natural time intervals; andcommit the at least one model time series to the plurality of timeseries managed by the time series engine; and a transform engineoperative to: manage a plurality of stateless transformations; apply atleast one stateless transformation to at least one time series receivedfrom the time series engine; create a transform time series thatcontains the values that are the result of the stateless transformation;and commit the transform time series to the plurality of time seriesmanaged by the time series engine; and a time series engine operativeto: manage a plurality of time series including source time series,transform time series, and model time series; and an output adapterconfigured to: convert a time series to a user defined format; andtransmit the known or predicted values in the user defined format to auser device or user service.
 39. The system of claim 38, wherein each ofthe plurality of time series is standardized according to a formatcomprising a natural time axis and an as of time axis, wherein an as oftime interval within the as of time axis represents a time from which avalue is projected across the natural time axis.
 40. The system of claim38, wherein the time series engine is configured to: access a databasecomprising at least a subset of the plurality of time series; andretrieve at least one time series from the database for use in thenetwork of time series.
 41. The system of claim 38 wherein the inputadapter is configured to: receive time series data from externalsources; and format the received time series data into a standardizedformat suitable for use in the network of time series.
 42. The system ofclaim 38, wherein the model time series is a first model series, thenetwork of time series further comprises a second model time series,wherein the first model time series is used as an input to a secondmodel that is responsible for generating predicted values that populatethe second model time series.
 43. The system of claim 38, furthercomprising a model adapter operative to enable the model engine to use afirst user model located remote from the system in lieu of one of theplurality of native models maintained by the model engine.
 44. Thesystem of claim 47, wherein the model engine is operative to: generate,using the first user model, the predicted values for the at least oneendogenous time series based on the at least one exogenous time series.45. The system of claim 38, wherein the plurality of data sources areprovided by external data vendors.
 46. A network of time series system,comprising: an input adapter configured to receive data from a pluralityof data sources; a model engine operative manage a plurality of models;a transform engine operative manage a plurality of statelesstransformations; and a time series engine operative to manage aplurality of time series including source time series, transform timesseries, and model time series; wherein the model engine, the transformengine, and the time series engine are collectively operative to: definea network of time series to include at least one exogenous time series,at least one endogenous times series, a model time series, and at leastone model, wherein the at least one exogenous time series and endogenoustime series are populated with data received from one of the pluralityof data sources; and generate a predicted value for inclusion into themodel time series using the network of time series.
 47. The system ofclaim 46, further comprising: an output adapter configured to: convertthe model time series to a user defined format; and transmit thepredicted value in the user defined format to a user device or userservice.
 48. The system of claim 46, wherein each of the plurality oftime series is standardized according to a format comprising a naturaltime axis and an as of time axis, wherein an as of time interval withinthe as of time axis represents a time from which a value is projectedacross the natural time axis.
 49. The system of claim 46, wherein thetime series engine is configured to: access a database comprising atleast a subset of the plurality of time series; and retrieve at leastone time series from the database for use in the network of time series.50. The system of claim 46 wherein the input adapter is configured to:receive time series data; and format the received time series data intoa standardized format suitable for use in the network of time series.51. The system of claim 46, wherein the model time series is a firstmodel series, the network of time series further comprises a secondmodel time series, wherein the first model time series is used as aninput responsible for populating the second model time series.
 52. Thesystem of claim 46, further comprising a model engine operative to usemodels to predict values for an existing time series, which are used tocreate new model time series for use by the time series engine.
 53. Thesystem of claim 46, further comprising a transform engine operative togenerate a new time series by applying stateless transformations to oneor more of the existing plurality of time series, wherein the resultingnew transform time series is added to the plurality of time seriesmanaged by the time series engine.
 54. The system of claim 46, whereinthe model engine is operative to fit each of the plurality of modelsusing at least one exogenous time series and at least one endogenoustime series.
 55. The system of claim 46, wherein the model engine isoperative to: select a first model within the plurality of models foruse in the network of time series; and generate, using the first model,the predicted values for the at least one endogenous time series basedon the at least one exogenous time series.
 56. The system of claim 46,further comprising a model adapter operative to enable the model engineto use a first user model located remote from the system in lieu of oneof the plurality of native models maintained by the model engine. 57.The system of claim 56, wherein the model engine is operative to:generate, using the first user model, the predicted values for the atleast one endogenous time series based on the at least one exogenoustime series.
 58. The system of claim 46, wherein the plurality of datasources are data vendors. 59.-93. (canceled)